<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div>
        <article class="message-body js-selectToQuote">
            <div class="bbWrapper"><span style="color: orange">
                    <h2 style="margin: 0">
                        Table of Content
                    </h2>
                </span>
                <ol>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Introduction">Introduction</a>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="PosFrames">Position on Screen
                            &amp; Frames (code driven)</a>
                        <ol>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="PosFrames_Natives">Set
                                    Pos Natives</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="PosFrames_Relative">Relative
                                    Position</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="PosFrames_Limitation43">4:3
                                    Limitation</a></li>
                        </ol>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="AccessFrames">Access
                            Frames</a>
                        <ol>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="AccessFramesByName">Access
                                    Frames By Name</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="AccessFramesLumberText">Change
                                    Text in Resource Lumber</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="AccessFramesUnitInfo">Unit
                                    Info Panel</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="AccessFramesByChild">Access
                                    Frames by Child</a>
                                <ul>
                                    <li data-xf-list-type="ul"><a href="javascript:;"
                                            data-hash="AccessFramesByChildTable">Table</a>
                                    </li>
                                </ul>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="AccessFramesOriginFrame">Origin-Frames</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="AccessFramesHideDefaultUI">Hide
                                    Default UI</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="AccessFramesMoveDefaultUI">Move
                                    Default UI</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="VariousFrameMods">Simple
                                    UI changes</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="ItemCommandButtonHovered">Hovering
                                    Command/ItemButton</a></li>
                        </ol>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frame_ParentShip">Frame
                            Parent-Child</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Point_FrameLevel">Frame Order
                            by Level</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="CreateFrame">Create
                            Frames</a>
                        <ol>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleImageNoFdf">BACKDROP
                                    without FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FrameExampleTextNoFDF">Text
                                    without FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleTextButtonNoFDF">TextButton
                                    without FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleTextButtonAutoCastEffectNoFDF">TextButton
                                    with AutoCast Model Without
                                    FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleSpriteRockBoltMissileNoFDF">Sprite
                                    RockBoltMissile Without FDF</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleIconButtonNoFDF">Icon
                                    Button without custom FDF</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FrameExampleSliderNoFDF">Slider
                                    without custom FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleCheckBoxNoFDF">Checkbox
                                    without FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleModelBarNoFdf">ModelBar
                                    without FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleBar2FaceNoFdf">2-Face
                                    without FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FrameExampleBarNoFdf">Bar
                                    without FDF</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleQuestLogFrame">Create
                                    a Textarea in QuestDialog</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="FrameExampleSomethingMoreComplexNoFDF">Creating
                                    a Multipage Frame</a></li>
                        </ol>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="KeyboardFocus">Keyboard
                            Focus</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="ToolTips">Tooltips</a>
                        <ol>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="ToolTips_Example">Example</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="ToolTips_Dynamic">BoxedText
                                    ToolTips Dynamic amount of
                                    Lines</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="ToolTips_SimpleFrame">SimpleFrame
                                    ToolTip</a></li>
                        </ol>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FrameEvents">FrameEvents</a>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FrameAndMultiplayer">Frames
                            &amp; Multiplayer</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FrameSaveAndLoad">Frame Save
                            &amp; Load</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Point_TOC">TOC</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Point_FDF">FDF</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FDFAction">FDF-Actions</a>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="FdfFramePos">Frame Pos in
                            FDF</a></li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_Types">FrameTypes</a>
                        <ol>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_Backdrop">Backdrop</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="Frames_TextButton">(Glue)(Text)Button</a>
                                <ol>
                                    <li data-xf-list-type="ol"><a href="javascript:;"
                                            data-hash="Frames_ButtonHotkey">Hotkeys</a>
                                    </li>
                                </ol>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_CHECKBOX">Checkbox</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_Dialog">Dialog
                                    - Yes/No</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_EditBox">EditBox
                                    - Textinput</a></li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_ListBox">ListBox</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_FRAME">Frame</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_HIGHLIGHT">Highlight</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_POPUPMENU">Popupmenu</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="Frames_RADIOGROUP">RadioGroup</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_SLIDER">Slider</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_SPRITE">Sprite</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_StatusBar">StatusBar</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_TEXTAREA">TextArea</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="Frames_TEXT">Text</a>
                            </li>
                        </ol>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="SimpleFrames">SimpleFrames</a>
                        <ol>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="SimpleFrames_String">String</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="SimpleFrames_Texture">Texture</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="SimpleFrames_Texture_TexCoord">TextureFraction</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="SimpleFrames_Layer">Layer</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="SimpleFrames_Button">SimpleButton</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="SimpleFrames_StatusBar">SimpleStatusBar</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="SimpleFrames_CheckBox">SimpleCheckBox</a>
                            </li>
                        </ol>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="TextMarkUp">TextMarkUP String
                            &amp; TEXT</a>
                        <ol>
                            <li data-xf-list-type="ol"><a href="javascript:;" data-hash="TextMarkUp_Fonts">Fonts</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="TextMarkUp_FontFlags">FontFlags</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="TextMarkUp_Alignment">Text-Alignment</a>
                            </li>
                            <li data-xf-list-type="ol"><a href="javascript:;"
                                    data-hash="TextMarkUp_Shadow">Text-Shadow</a>
                            </li>
                        </ol>
                    </li>
                    <li data-xf-list-type="ol"><a href="javascript:;" data-hash="KnownErrors">Errors</a></li>
                </ol><br>
                <a id="Introduction"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Introduction
                    </h2>
                </span>With patch V1.31 for Warcraft 3, Blizzard
                added for map makers the capability to modify the
                ingame UI by code, with the same feature one can
                also create own custom UI-Elements. This UI-Elements
                are called Frames. The Minimap, Command-, Item-,
                Hero-, MenuButtons, the Chat, Multiboards,
                TimerDialogs, LeaderBoards, and many more which are
                not part of the playerable world. All of them are
                examples of such Frames.<br>
                <br>
                Frames can display Text, Textures and Models. There
                are also interactive ones that can be used for user
                input like a Button, a Slider or an Editbox (a
                textfield the user can write text into). This
                UI-Features can use 2 FileTypes which one doesn't
                need otherwise: TOC and FDF.<br>
                <br>
                While TOC and FDF are quite powerful one can use
                alot of UI-Features without custom ones.<br>
                Following content tries to help or describe using
                this UI-Frame-api introduced in V1.31.<br>
                <a id="PosFrames"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Position on Screen &amp; Frames
                    </h2>
                </span>Positions on Screen are an important knowlage
                when using this whole UI-Frame feature. Warcraft 3
                was at the beginning a 4:3 only Game. Hence their
                own UI-FrameWork has a coordinate system that makes
                sense for the 4:3 part.<br>
                The Position goes from 0.0/0.0 at the Bottomleft of
                the minimap to the Topright with 0.8/0.6 (Topright
                of the Upkeep Level). The used Resolution does not
                matter, this values do not change. This Values are
                also used for Size of Frames. Pixel based
                size/Coords are only doable with some conversion
                math.<br>



                <div class="bbImageWrapper  js-lbImage" title="coords-image-56-jpg.325821"
                    data-src="https://www.hiveworkshop.com/attachments/coords-image-56-jpg.325821/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;coords-image-56-jpg.325821&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Coords Image 56.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/coords-image-56-jpg.325821/" class="bbImage"
                        data-zoom-target="1" style="" alt="coords-image-56-jpg.325821" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>




                <div class="bbImageWrapper  js-lbImage" title="warcraft-3-coord-system-3-jpg.359576"
                    data-src="https://www.hiveworkshop.com/attachments/warcraft-3-coord-system-3-jpg.359576/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;warcraft-3-coord-system-3-jpg.359576&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/warcraft 3 coord system 3.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/warcraft-3-coord-system-3-jpg.359576/"
                        class="bbImage" data-zoom-target="1" style="" alt="warcraft-3-coord-system-3-jpg.359576"
                        title="" width="" height="" loading="lazy">
                </div>

                <br>
                <a id="PosFrames_Natives"></a>There exist 4 natives
                to manipulate the position of a Frame with code.<br>



                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetPoint</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framepointtype</span> point<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framehandle</span> relative<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framepointtype</span> relativePoint<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> x<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> y <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framepointtype</span> point<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> x<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> y <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameClearAllPoints</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetAllPoints</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framehandle</span> relative <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span></code></pre>
                    </div>
                </div>Each has great usage.<br>
                <br>
                <code class="bbCodeInline">BlzFrameSetAbsPoint</code>
                takes one point of a Frame unbound that point and
                places it to a specific coordinates on the
                screen.<br>
                <code class="bbCodeInline">BlzFrameSetPoint</code>
                places a point of FrameA relative to a point of
                FrameB. When FrameB moves FrameA's point will keep
                this rule and moves with it.<br>
                <code class="bbCodeInline">BlzFrameClearAllPoints</code>
                removes all curent bound points of that frame.<br>
                <code class="bbCodeInline">BlzFrameSetAllPoints</code>
                FrameA will copy FrameB in size and position. FrameA
                will update when FrameB is changed later.<br>
                <br>
                As one might see, warcraft's UI use a type named
                framepointtype, the constants for this type in code
                are:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-constant">FRAMEPOINT_TOPLEFT</span>
<span class="prism-token prism-constant">FRAMEPOINT_TOP</span>
<span class="prism-token prism-constant">FRAMEPOINT_TOPRIGHT</span>
<span class="prism-token prism-constant">FRAMEPOINT_LEFT</span>
<span class="prism-token prism-constant">FRAMEPOINT_CENTER</span>
<span class="prism-token prism-constant">FRAMEPOINT_RIGHT</span>
<span class="prism-token prism-constant">FRAMEPOINT_BOTTOMLEFT</span>
<span class="prism-token prism-constant">FRAMEPOINT_BOTTOM</span>
<span class="prism-token prism-constant">FRAMEPOINT_BOTTOMRIGHT</span></code></pre>
                    </div>
                </div>Using different Points alters the result and
                can do some wanted Results more easy. Fiddling the
                left to the left part of the screen can be
                complicated when one moves the CENTER of a
                Frame.<br>
                one can place more then one point for a Frame. In
                such a case the taken space on the screen does not
                fit the frames size anymore. The game tries to
                fullfill all set points as good that is possible for
                a rectangle.<br>
                Therefore if one simply wants to move a Frame, one
                first has to clear all set points with <code class="bbCodeInline">BlzFrameClearAllPoints</code>
                before doing the actual position setting.<br>
                <br>
                When only one FramePoint is placed the choosen
                FramePoint has a strong impact on the result. It
                limites the directions the Frame expands.<br>
                When using a point containing:<br>
                <div style="margin-left: 20px">LEFT can only extend
                    to the right x wise -&gt;.<br>
                    RIGHT can only extend to the left x wise
                    &lt;-.<br>
                    CENTER extends equal in all directions
                    &lt;-&gt;<br>
                    TOP can only extend downwards y wise<br>
                    BOTTOM can only extend upwards y wise.​</div>












                <div class="bbImageWrapper  js-lbImage" title="extend-frame-green-arrows-jpg.373640"
                    data-src="https://www.hiveworkshop.com/attachments/extend-frame-green-arrows-jpg.373640/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;extend-frame-green-arrows-jpg.373640&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Extend Frame - Green Arrows.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/extend-frame-green-arrows-jpg.373640/"
                        class="bbImage" data-zoom-target="1" style="" alt="extend-frame-green-arrows-jpg.373640"
                        title="" width="" height="" loading="lazy">
                </div>

                <br>
                One can imagine Frames as rectangles when one sets
                size and position.<br>
                <br>
                <a id="PosFrames_Relative"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Relative Position
                    </h3>
                </span>Frames that belong logical to some other
                Frame benefit much when one sets their position
                relative to that frame they belong to or relative to
                a frame that is relative to the owner that could be
                contiuned, but in the end it is relative to the
                Owner Frame. This relative position is updated when
                the other Frame is moved. Because of that one only
                needs to set the position of the not relative posed
                Frame in that group and everything moves with it. In
                code the native doing that is <code class="bbCodeInline">BlzFrameSetPoint</code>.<br>
                Setting Relative position is a little bit inversed.
                When one wants to place FrameA left to FrameB one
                needs to place the right side (of the moving) to the
                left of the target.<br>













                <div class="bbImageWrapper  js-lbImage" title="left-to-right-jpg.359563"
                    data-src="https://www.hiveworkshop.com/attachments/left-to-right-jpg.359563/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;left-to-right-jpg.359563&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Left to Right.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/left-to-right-jpg.359563/" class="bbImage"
                        data-zoom-target="1" style="" alt="left-to-right-jpg.359563" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>frameLeft<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_RIGHT</span><span class="prism-token prism-punctuation">,</span> frameTarget<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_LEFT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>frameRight<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_LEFT</span><span class="prism-token prism-punctuation">,</span> frameTarget<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_RIGHT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>The x and y offset in BlzFrameSetPoint are
                added to the target Point. with +x the position
                anchored is moved further to the right and with +y
                it is moved higher up.<br>













                <div class="bbImageWrapper  js-lbImage" title="relative-offset-jpg.359564"
                    data-src="https://www.hiveworkshop.com/attachments/relative-offset-jpg.359564/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;relative-offset-jpg.359564&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Relative Offset.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/relative-offset-jpg.359564/" class="bbImage"
                        data-zoom-target="1" style="" alt="relative-offset-jpg.359564" title="" width="" height=""
                        loading="lazy">
                </div>














                <div class="bbImageWrapper  js-lbImage" title="relative-offset-xy-jpg.359569"
                    data-src="https://www.hiveworkshop.com/attachments/relative-offset-xy-jpg.359569/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;relative-offset-xy-jpg.359569&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Relative Offset - xy.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/relative-offset-xy-jpg.359569/"
                        class="bbImage" data-zoom-target="1" style="" alt="relative-offset-xy-jpg.359569" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                <br>
                In Fdf one can set position only relative to Frames
                known by Name.<br>
                <br>
                <br>
                This Lua code creates 2 Backdrop one that has a
                fixed position the other frequently changes the used
                FramePoint to pos to the same position. This works
                out of the Box. It should display the impact of
                usind different FramePoints. As bigger the Frame is
                as more the used FramePoint matters.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create the moving frame</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonBaseTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- the not movingframe to show the difference more clear.</span>
<span class="prism-token prism-keyword">local</span> screenCenter <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>screenCenter<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.02</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.02</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>screenCenter<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor00"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>screenCenter<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- every 0.4 seconds change the current used Framepoint</span>
<span class="prism-token prism-keyword">local</span> counter <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span>
<span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">ConvertFramePointType</span><span class="prism-token prism-punctuation">(</span>counter<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
counter <span class="prism-token prism-operator">=</span> counter <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span>

<span class="prism-token prism-keyword">if</span> counter <span class="prism-token prism-operator">&gt;</span> <span class="prism-token prism-number">8</span> <span class="prism-token prism-keyword">then</span>
counter <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                Creating a linked row of frames is doable without
                any math by using two opposite framepoints and
                BlzFrameSetPoint. The direction of the row is the 2.
                point used in the native. Such a Row will keep being
                linked as long only the frame that has no row Link
                is moved.<br>
                This <code
                    class="bbCodeInline">BlzFrameSetPoint(newFrame, FRAMEPOINT_LEFT, prevFrame, FRAMEPOINT_RIGHT, 0, 0)</code>
                results into Frame1, 2 and 3 -&gt;. One could add a
                little space between them by using 0.003 for x
                offset.<br>
                While <code
                    class="bbCodeInline">BlzFrameSetPoint(newFrame, FRAMEPOINT_RIGHT, prevFrame, FRAMEPOINT_LEFT , 0, 0)</code>
                Results into Frame3, 2 and 1 &lt;-. if one wants a
                small gab between beaware that now you have to use a
                negative xOffset, -0.003 for example. With a
                +xoffset the frames would overlap.<br>
                <code
                    class="bbCodeInline">BlzFrameSetPoint(newFrame, FRAMEPOINT_TOP, prevFrame, FRAMEPOINT_BOTTOM, 0, 0)</code>
                ↓<br>
                <code
                    class="bbCodeInline">BlzFrameSetPoint(newFrame, FRAMEPOINT_BOTTOM, prevFrame, FRAMEPOINT_TOP, 0, 0)</code>
                ↑<br>
                <br>
                <a id="PosFrames_Limitation43"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        4:3 Limiation
                    </h3>
                </span>Most custom created Frames from the Frame
                group can not leave the 4:3 part of the screen. If a
                part of them leave it, they become malformed. A
                TEXT-Frame might cut off some chars. A BACKDROP
                becomes smaller and with that also Buttons and many
                others etc.<br>
                SimpleFrames are free from that limitation.<br>
                One can free Frames from that 4:3 limitation by
                creating them for a different Parent then GAME_UI,
                in Reforged such a Parent could be
                ("ConsoleUIBackdrop",0). Through that don't comes
                with a price. Using ("ConsoleUIBackdrop",0) as
                parent pushes them to a lower Layer, below
                SimpleFrames.<br>
                One also could use BlzGetFrameByName("Leaderboard",
                0) or BlzGetFrameByName("Multiboard", 0). This are
                above SimpleFrames but one has to create them first
                with the none Frame api.<br>
                Your custom Frames can also be a child's child of
                that other Parents, the 4:3 Limitation is still
                gone.<br>
                <br>
                A Lua example to spawn a ScriptDialogButton right to
                the command buttons using "Leaderboard" as
                parent.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">CreateLeaderboardBJ</span><span class="prism-token prism-punctuation">(</span>bj_FORCE_ALL_PLAYERS<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"title"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> parent <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Leaderboard"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"LeaderboardBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"LeaderboardTitle"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> button1 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"name"</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button1<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT <span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.85</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>First one creates the LeaderBoard with the
                normal api. Then one gets the new frame sets the
                size to 0 to make the screen space it takes
                clickable for the playable-world. Then one hides the
                Title and Backdrop Frame (to fix a grafic glitch).
                After that one uses it as parent of the Frame.<br>
                If one wants to use LeaderBoards, one has to save
                the parentFrame in a global and has to show it with
                BlzFrameSetVisible after the other was shown.<br>
                <br>
                <a id="PosFrames_FullscreenFrame"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Fullscreen Frame
                    </h3>
                </span>Instead of using the Warcraft 3 4:3 positions
                one can pos frames relative to a custom created
                Frame which is fullscreen. That fullscreen size can
                be done by setting the size of the Frame every 0.xx
                seconds to<br>
                <code
                    class="bbCodeInline">BlzFrameSetSize(relative, BlzGetLocalClientWidth()/BlzGetLocalClientHeight()*0.6, 0.6)</code><br>
                That Frame also would be placed to the Bottom of the
                screen:<br>
                <code class="bbCodeInline">BlzFrameSetAbsPoint(relative, FRAMEPOINT_BOTTOM, 0.4, 0.0)</code><br>
                The Frame has to be able to leave the 4:3 Screen for
                this to work.<br>
                Now one poses Frame relative to the relative.<br>
                <a id="AccessFrames"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Access Frames
                    </h2>
                </span>The Frames of warcraft 3 are stored in a
                storage which can be read with a name and a number
                this number is called CreateContext. The native that
                reads that storage: <code
                    class="bbCodeInline">BlzGetFrameByName takes string name, integer createContext returns framehandle</code>.
                With unique CreateContext one is capable to reuse
                the same frame (name) and is still capable to acces
                all of them over their name which should kinda tell
                their behaviour. But CreateContext does not matter
                much for Frames having only one instance in such a
                case 0 is used. <code class="bbCodeInline">BlzGetFrameByName("ConsoleUI", 0)</code>
                looks in that storage for a frame named "ConsoleUI"
                with CreateContext 0 and returns a reference to it,
                or null when such was not found. In Lua it does
                still return a framehandle with a HandleId of 0.<br>
                When a new Frame is created it will take the his
                slot in the storage, name &amp; createContext. All
                ChildFrames created with the same Creation will also
                take their slots with their names and the same
                createcontext as the current creation.<br>
                <code class="bbCodeInline">BlzGetFrameByName</code>
                is used to access child-Frames or to get builtin
                Frames like the UnitInfo Frames, Resource Frames and
                others. This is an List of Names for frames found in
                the Blizzard fdfs for warcraft 3
                https://www.hiveworkshop.com/threads/default-names-for-blzgetframebyname.315846/.
                <br>
                <br>
                <br>
                <div style="margin-left: 20px">
                    LeaderBoard/Multiboard/TimerDialog do only work
                    when the map created such ones.<br>
                    LogDialog is only used in SinglePlayer.<br>
                    Chat Frames are only used in Multiplayer.<br>
                    Quest Frames are created after the Quest Button
                    was clicked (can be forced with code, first line
                    opens the quest dialog the second closes it)<br>
                    <div style="margin-left: 20px">call
                        BlzFrameClick(BlzGetFrameByName("UpperButtonBarQuestsButton",
                        0))<br>
                        call
                        BlzFrameClick(BlzGetFrameByName("QuestAcceptButton",
                        0))​</div>
                </div>If there is no nr next to a name, one uses
                "0".<br>
                For example <code class="bbCodeInline">BlzGetFrameByName("HelpTextArea",0)</code>
                would return the frame handling the help Text
                Area.<br>
                <br>


                <div class="bbCodeSpoiler">
                    <button type="button" class="bbCodeSpoiler-button button--longText button" data-xf-click="toggle"
                        data-xf-init="tooltip" data-original-title="Click to reveal or hide spoiler"
                        id="js-XFUniqueId51"><span class="button-text">

                            <span><span class="bbCodeSpoiler-button-title">images</span></span>
                        </span></button>
                    <div class="bbCodeSpoiler-content">
                        <div class="bbCodeBlock bbCodeBlock--spoiler">
                            <div class="bbCodeBlock-content"><a href="https://www.hiveworkshop.com/attachments/374778/"
                                    target="_blank">View attachment
                                    374778</a> <a href="https://www.hiveworkshop.com/attachments/374779/"
                                    target="_blank">View attachment
                                    374779</a> <a href="https://www.hiveworkshop.com/attachments/374780/"
                                    target="_blank">View attachment
                                    374780</a> <a href="https://www.hiveworkshop.com/attachments/374781/"
                                    target="_blank">View attachment
                                    374781</a><a href="https://www.hiveworkshop.com/attachments/374782/"
                                    target="_blank">View attachment
                                    374782</a> <a href="https://www.hiveworkshop.com/attachments/374783/"
                                    target="_blank">View attachment
                                    374783</a> <a href="https://www.hiveworkshop.com/attachments/374784/"
                                    target="_blank">View attachment
                                    374784</a><a href="https://www.hiveworkshop.com/attachments/374786/"
                                    target="_blank">View attachment
                                    374786</a><a href="https://www.hiveworkshop.com/attachments/374787/"
                                    target="_blank">View attachment
                                    374787</a><a href="https://www.hiveworkshop.com/attachments/374804/"
                                    target="_blank">View attachment
                                    374804</a><a href="https://www.hiveworkshop.com/attachments/374847/"
                                    target="_blank">View attachment
                                    374847</a> <a href="https://www.hiveworkshop.com/attachments/374848/"
                                    target="_blank">View attachment
                                    374848</a><a href="https://www.hiveworkshop.com/attachments/374849/"
                                    target="_blank">View attachment
                                    374849</a> <a href="https://www.hiveworkshop.com/attachments/374852/"
                                    target="_blank">View attachment
                                    374852</a><a href="https://www.hiveworkshop.com/attachments/374853/"
                                    target="_blank">View attachment
                                    374853</a> <a href="https://www.hiveworkshop.com/attachments/374854/"
                                    target="_blank">View attachment
                                    374854</a><a href="https://www.hiveworkshop.com/attachments/374855/"
                                    target="_blank">View attachment
                                    374855</a><a href="https://www.hiveworkshop.com/attachments/374906/"
                                    target="_blank">View attachment
                                    374906</a> <a href="https://www.hiveworkshop.com/attachments/374909/"
                                    target="_blank">View attachment
                                    374909</a><a href="https://www.hiveworkshop.com/attachments/374910/"
                                    target="_blank">View attachment
                                    374910</a><a href="https://www.hiveworkshop.com/attachments/374911/"
                                    target="_blank">View attachment
                                    374911</a> </div>
                        </div>
                    </div>
                </div><br>
                <a id="AccessFramesByName"></a><br>



                <div class="bbcode-tabs" data-xf-init="tabs-tag">
                    <div class="titles">

                        <h3 data-id="0" class="active">1.31</h3>

                        <h3 data-id="1" class="">1.32.10</h3>

                    </div>
                    <div class="bodies">

                        <div data-id="0" class="active"><br>









                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Code:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>AllianceAcceptButton
AllianceAcceptButtonText
AllianceBackdrop
AllianceCancelButton
AllianceCancelButtonText
AllianceDialog
AllianceDialogScrollBar
AllianceSlot [0 to 23]
AllianceTitle
AlliedVictoryCheckBox
AlliedVictoryLabel
AllyCheckBox [0 to 23]
AllyHeader
AmbientCheckBox
AmbientLabel
AnimQualityLabel
AnimQualityValue
BottomButtonPanel
ButtonBackdropTemplate
ButtonDisabledBackdropTemplate
ButtonDisabledPushedBackdropTemplate
ButtonPushedBackdropTemplate
CancelButtonText
ChatDialog
ChatBackdrop
ChatTitle
ChatPlayerRadioButton
ChatAlliesRadioButton
ChatObserversRadioButton
ChatEveryoneRadioButton
ChatPlayerLabel
ChatAlliesLabel
ChatObserversLabel
ChatEveryoneLabel
ChatPlayerMenu
ChatAcceptButton
ChatAcceptButtonText
ChatHistoryDisplayBackdrop
ChatHistoryDisplay
ChatHistoryScrollBar
ChatHistoryLabel
ChatInfoText
CinematicBottomBorder
CinematicDialogueText
CinematicPanel
CinematicPortrait
CinematicPortraitBackground
CinematicPortraitCover
CinematicScenePanel
CinematicSpeakerText
CinematicTopBorder
ColorBackdrop [0 to 23]
ColorBorder [0 to 23]
ConfirmQuitCancelButton
ConfirmQuitCancelButtonText
ConfirmQuitMessageText
ConfirmQuitPanel
ConfirmQuitQuitButton
ConfirmQuitQuitButtonText
ConfirmQuitTitleText
ConsoleUI
CustomKeysLabel
CustomKeysValue
DecoratedMapListBox
DeleteCancelButton
DeleteCancelButtonText
DeleteDeleteButton
DeleteDeleteButtonText
DeleteMessageText
DeleteOnly
DeleteTitleText
DifficultyLabel
DifficultyValue
EndGameButton
EndGameButtonText
EndGamePanel
EndGameTitleText
EnviroCheckBox
EnviroLabel
EscMenuBackdrop
EscMenuDeleteContainer
EscMenuMainPanel
EscMenuOptionsPanel
EscMenuOverwriteContainer
EscMenuSaveGamePanel
EscMenuSaveLoadContainer
EscOptionsLightsMenu
EscOptionsLightsPopupMenuArrow
EscOptionsLightsPopupMenuBackdrop
EscOptionsLightsPopupMenuDisabledBackdrop
EscOptionsLightsPopupMenuMenu
EscOptionsLightsPopupMenuTitle
EscOptionsOcclusionMenu
EscOptionsOcclusionPopupMenuArrow
EscOptionsOcclusionPopupMenuBackdrop
EscOptionsOcclusionPopupMenuDisabledBackdrop
EscOptionsOcclusionPopupMenuMenu
EscOptionsOcclusionPopupMenuTitle
EscOptionsParticlesMenu
EscOptionsParticlesPopupMenuArrow
EscOptionsParticlesPopupMenuBackdrop
EscOptionsParticlesPopupMenuDisabledBackdrop
EscOptionsParticlesPopupMenuMenu
EscOptionsParticlesPopupMenuTitle
EscOptionsResolutionMenu
EscOptionsResolutionPopupMenuArrow
EscOptionsResolutionPopupMenuBackdrop
EscOptionsResolutionPopupMenuDisabledBackdrop
EscOptionsResolutionPopupMenuMenu
EscOptionsResolutionPopupMenuTitle
EscOptionsShadowsMenu
EscOptionsShadowsPopupMenuArrow
EscOptionsShadowsPopupMenuBackdrop
EscOptionsShadowsPopupMenuDisabledBackdrop
EscOptionsShadowsPopupMenuMenu
EscOptionsShadowsPopupMenuTitle
EscOptionsWindowModeMenu
EscOptionsWindowModePopupMenuArrow
EscOptionsWindowModePopupMenuBackdrop
EscOptionsWindowModePopupMenuDisabledBackdrop
EscOptionsWindowModePopupMenuMenu
EscOptionsWindowModePopupMenuTitle
ExitButton
ExitButtonText
ExtraHighLatencyLabel
ExtraHighLatencyRadio
FileListFrame
FormationToggleCheckBox
FormationToggleLabel
GameplayButton
GameplayButtonText
GameplayPanel
GameplayTitleText
GameSpeedLabel
GameSpeedSlider
GameSpeedValue
GammaBrightLabel
GammaDarkLabel
GammaLabel
GammaSlider
GoldBackdrop [0 to 23]
GoldHeader
GoldText [0 to 23]
HealthBarsCheckBox
HealthBarsLabel
HelpButton
HelpButtonText
HelpOKButton
HelpOKButtonText
HelpPanel
HelpTextArea
HelpTitleText
HighLatencyLabel
HighLatencyRadio
InfoPanelIconAllyFoodIcon [7]
InfoPanelIconAllyFoodValue [7]
InfoPanelIconAllyGoldIcon [7]
InfoPanelIconAllyGoldValue [7]
InfoPanelIconAllyTitle [7]
InfoPanelIconAllyUpkeep [7]
InfoPanelIconAllyWoodIcon [7]
InfoPanelIconAllyWoodValue [7]
InfoPanelIconBackdrop [0 to 5]
InfoPanelIconHeroAgilityLabel [6]
InfoPanelIconHeroAgilityValue [6]
InfoPanelIconHeroIcon [6]
InfoPanelIconHeroIntellectLabel [6]
InfoPanelIconHeroIntellectValue [6]
InfoPanelIconHeroStrengthLabel [6]
InfoPanelIconHeroStrengthValue [6]
InfoPanelIconLabel [0 to 5]
InfoPanelIconLevel [0 to 5]
InfoPanelIconValue [0 to 5]
InsideConfirmQuitPanel
InsideEndGamePanel
InsideHelpPanel
InsideMainPanel
InsideTipsPanel
KeyScrollFastLabel
KeyScrollLabel
KeyScrollSlider
KeyScrollSlowLabel
LatencyInfo1
LatencyInfo2
Leaderboard
LeaderboardBackdrop
LeaderboardListContainer
LeaderboardTitle
LightsLabel
LoadGameButton
LoadGameButtonText
LoadGameCancelButton
LoadGameCancelButtonText
LoadGameLoadButton
LoadGameLoadButtonText
LoadGameTitleText
LoadOnly
LogArea
LogAreaBackdrop
LogAreaScrollBar
LogBackdrop
LogDialog
LogOkButton
LogOkButtonText
LogTitle
LowLatencyLabel
LowLatencyRadio
LumberBackdrop [0 to 23]
LumberHeader
LumberText [0 to 23]
MainPanel
MapListBoxBackdrop
MapListScrollBar
ModelDetailLabel
ModelDetailValue
MouseScrollDisable
MouseScrollDisableLabel
MouseScrollFastLabel
MouseScrollLabel
MouseScrollSlider
MouseScrollSlowLabel
MovementCheckBox
MovementLabel
Multiboard
MultiboardBackdrop
MultiboardListContainer
MultiboardMinimizeButton
MultiboardTitle
MultiboardTitleBackdrop
MusicCheckBox
MusicVolumeHighLabel
MusicVolumeLabel
MusicVolumeLowLabel
MusicVolumeSlider
NetworkButton
NetworkButtonText
NetworkLabel
NetworkPanel
NetworkTitleText
ObserverCameraCheckBox
ObserverCameraString
ObserverFogCheckBox
ObserverFogString
ObserverVisionMenu
ObserverVisionMenuArrow
ObserverVisionMenuBackdrop
ObserverVisionMenuDisabledBackdrop
ObserverVisionMenuTitle
ObserverVisionPopupMenu
ObserverVisionPopupMenuMenuBackdropTemplate
OcclusionLabel
OKButtonText
OptionsButton
OptionsButtonText
OptionsCancelButton
OptionsOKButton
OptionsPanel
OptionsPreviousButton
OptionsPreviousButtonText
OptionsTitleText
OverwriteCancelButton
OverwriteCancelButtonText
OverwriteMessageText
OverwriteOnly
OverwriteOverwriteButton
OverwriteOverwriteButtonText
OverwriteTitleText
ParticlesLabel
PauseButton
PauseButtonText
PlayerNameLabel [0 to 23]
PlayersHeader
PositionalCheckBox
PositionalLabel
PreviousButton
PreviousButtonText
ProviderLabel
ProviderValue
"QuestAcceptButton",0
"QuestAcceptButtonText",0
"QuestBackdrop",0
"QuestDetailsTitle",0
"QuestDialog",0
"QuestDisplay",0
"QuestDisplayBackdrop",0
"QuestDisplayScrollBar",0
"QuestItemListContainer",0
"QuestItemListItem",6
"QuestItemListItem",7
"QuestItemListItem",8
"QuestItemListItem",9
"QuestItemListItemTitle",6
"QuestItemListItemTitle",7
"QuestItemListItemTitle",8
"QuestItemListItemTitle",9
"QuestItemListScrollBar",0
"QuestListItem",0
"QuestListItem",1
"QuestListItem",2
"QuestListItem",3
"QuestListItem",4
"QuestListItem",5
"QuestListItemBorder",0
"QuestListItemBorder",1
"QuestListItemBorder",2
"QuestListItemBorder",3
"QuestListItemBorder",4
"QuestListItemBorder",5
"QuestListItemButton",0
"QuestListItemButton",1
"QuestListItemButton",2
"QuestListItemButton",3
"QuestListItemButton",4
"QuestListItemButton",5
"QuestListItemComplete",0
"QuestListItemComplete",1
"QuestListItemComplete",2
"QuestListItemComplete",3
"QuestListItemComplete",4
"QuestListItemComplete",5
"QuestListItemCompletedHighlight",0
"QuestListItemCompletedHighlight",1
"QuestListItemCompletedHighlight",2
"QuestListItemCompletedHighlight",3
"QuestListItemCompletedHighlight",4
"QuestListItemCompletedHighlight",5
"QuestListItemFailedHighlight",0
"QuestListItemFailedHighlight",1
"QuestListItemFailedHighlight",2
"QuestListItemFailedHighlight",3
"QuestListItemFailedHighlight",4
"QuestListItemFailedHighlight",5
"QuestListItemIconContainer",0
"QuestListItemIconContainer",1
"QuestListItemIconContainer",2
"QuestListItemIconContainer",3
"QuestListItemIconContainer",4
"QuestListItemIconContainer",5
"QuestListItemSelectedHighlight",0
"QuestListItemSelectedHighlight",1
"QuestListItemSelectedHighlight",2
"QuestListItemSelectedHighlight",3
"QuestListItemSelectedHighlight",4
"QuestListItemSelectedHighlight",5
"QuestListItemTitle",0
"QuestListItemTitle",1
"QuestListItemTitle",2
"QuestListItemTitle",3
"QuestListItemTitle",4
"QuestListItemTitle",5
"QuestMainContainer",0
"QuestMainListScrollBar",0
"QuestMainTitle",0
"QuestOptionalContainer",0
"QuestOptionalListScrollBar",0
"QuestOptionalTitle",0
"QuestSubtitleValue",0
"QuestTitleValue",0
QuitButton
QuitButtonText
ResolutionLabel
ResourceBarFrame
ResourceBarGoldText
ResourceBarLumberText
ResourceBarSupplyText
ResourceBarUpkeepText
ResourceTradingTitle
RestartButton
RestartButtonText
ReturnButton
ReturnButtonText
SaveAndLoad
SaveGameButton
SaveGameButtonText
SaveGameCancelButton
SaveGameCancelButtonText
SaveGameDeleteButton
SaveGameDeleteButtonText
SaveGameFileEditBox
SaveGameFileEditBoxText
SaveGameSaveButton
SaveGameSaveButtonText
SaveGameTitleText
SaveOnly
ShadowsLabel
SimpleBuildingActionLabel [0 &amp; 1]
SimpleBuildingDescriptionValue [1]
SimpleBuildingNameValue [1]
SimpleBuildQueueBackdrop [1]
SimpleBuildTimeIndicator [0 &amp; 1]
SimpleClassValue
SimpleDestructableNameValue [4]
SimpleHeroLevelBar
SimpleHoldDescriptionValue [2]
SimpleHoldNameValue [2]
SimpleInfoPanelBuildingDetail [1]
SimpleInfoPanelCargoDetail [2]
SimpleInfoPanelDestructableDetail [4]
SimpleInfoPanelIconAlly [7]
SimpleInfoPanelIconArmor [2]
SimpleInfoPanelIconDamage [0 &amp; 1]
SimpleInfoPanelIconFood [4]
SimpleInfoPanelIconGold [5]
SimpleInfoPanelIconHero [6]
SimpleInfoPanelIconHeroText [6]
SimpleInfoPanelIconRank [3]
SimpleInfoPanelItemDetail [3]
SimpleInfoPanelUnitDetail
SimpleItemDescriptionValue [3]
SimpleItemNameValue [3]
SimpleNameValue
SimpleObserverPanel
SimpleProgressIndicator
SimpleUnitStatsPanel
SoundButton
SoundButtonText
SoundCheckBox
SoundPanel
SoundTitleText
SoundVolumeHighLabel
SoundVolumeLabel
SoundVolumeLowLabel
SoundVolumeSlider
SubgroupCheckBox
SubgroupLabel
SubtitlesCheckBox
SubtitlesLabel
TextureQualityLabel
TextureQualityValue
TimerDialog [0 to x]
TimerDialogBackdrop [0 to x]
TimerDialogValue [0 to x]
TimerDialogTitle [0 to x]
TipsBackButton
TipsBackButtonText
TipsButton
TipsButtonText
TipsNextButton
TipsNextButtonText
TipsOKButton
TipsOKButtonText
TipsPanel
TipsTextArea
TipsTitleText
TooltipsCheckBox
TooltipsLabel
UnitCheckBox
UnitLabel
UnitsCheckBox [0 to 23]
UnitsHeader
UpperButtonBarAlliesButton
UpperButtonBarChatButton
UpperButtonBarFrame
UpperButtonBarMenuButton
UpperButtonBarQuestsButton
VideoButton
VideoButtonText
VideoPanel
VideoTitleText
VisionCheckBox [0 to 23]
VisionHeader
VSyncCheckBox
VSyncLabel
WindowModeLabel
WouldTheRealOptionsTitleTextPleaseStandUp</code></pre>
                                </div>
                            </div>
                        </div>

                        <div data-id="1" class="">








                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Code:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>BrowseFrames = {
{"AllianceAcceptButton", 0}
,{"AllianceAcceptButtonText", 0}
,{"AllianceBackdrop", 0}
,{"AllianceCancelButton", 0}
,{"AllianceCancelButtonText", 0}
,{"AllianceDialog", 0}
,{"AllianceDialogScrollBar", 0}
,{"AllianceSlot", 0}
,{"AllianceSlot", 1}
,{"AllianceSlot", 2}
,{"AllianceSlot", 3}
,{"AllianceSlot", 4}
,{"AllianceSlot", 5}
,{"AllianceSlot", 6}
,{"AllianceSlot", 7}
,{"AllianceSlot", 8}
,{"AllianceSlot", 9}
,{"AllianceSlot", 10}
,{"AllianceSlot", 11}
,{"AllianceSlot", 12}
,{"AllianceSlot", 13}
,{"AllianceSlot", 14}
,{"AllianceSlot", 15}
,{"AllianceSlot", 16}
,{"AllianceSlot", 17}
,{"AllianceSlot", 18}
,{"AllianceSlot", 19}
,{"AllianceSlot", 20}
,{"AllianceSlot", 21}
,{"AllianceSlot", 22}
,{"AllianceSlot", 23}
,{"AllianceTitle", 0}
,{"AlliedVictoryCheckBox", 0}
,{"AlliedVictoryLabel", 0}
,{"AllyCheckBox", 0}
,{"AllyCheckBox", 1}
,{"AllyCheckBox", 2}
,{"AllyCheckBox", 3}
,{"AllyCheckBox", 4}
,{"AllyCheckBox", 5}
,{"AllyCheckBox", 6}
,{"AllyCheckBox", 7}
,{"AllyCheckBox", 8}
,{"AllyCheckBox", 9}
,{"AllyCheckBox", 10}
,{"AllyCheckBox", 11}
,{"AllyCheckBox", 12}
,{"AllyCheckBox", 13}
,{"AllyCheckBox", 14}
,{"AllyCheckBox", 15}
,{"AllyCheckBox", 16}
,{"AllyCheckBox", 17}
,{"AllyCheckBox", 18}
,{"AllyCheckBox", 19}
,{"AllyCheckBox", 20}
,{"AllyCheckBox", 21}
,{"AllyCheckBox", 22}
,{"AllyCheckBox", 23}
,{"AllyHeader", 0}
,{"AmbientCheckBox", 0}
,{"AmbientLabel", 0}
,{"AnimQualityLabel", 0}
,{"AnimQualityValue", 0}
,{"BottomButtonPanel", 0}
,{"CancelButtonText", 0}
,{"ChatDialog", 0}
,{"ChatBackdrop", 0}
,{"ChatTitle", 0}
,{"ChatPlayerRadioButton", 0}
,{"ChatAlliesRadioButton", 0}
,{"ChatObserversRadioButton", 0}
,{"ChatEveryoneRadioButton", 0}
,{"ChatPlayerLabel", 0}
,{"ChatAlliesLabel", 0}
,{"ChatObserversLabel", 0}
,{"ChatEveryoneLabel", 0}
,{"ChatPlayerMenu", 0}
,{"ChatAcceptButton", 0}
,{"ChatAcceptButtonText", 0}
,{"ChatHistoryDisplayBackdrop", 0}
,{"ChatHistoryDisplay", 0}
,{"ChatHistoryScrollBar", 0}
,{"ChatHistoryLabel", 0}
,{"ChatInfoText", 0}
,{"CinematicBottomBorder", 0}
,{"CinematicDialogueText", 0}
,{"CinematicPanel", 0}
,{"CinematicPanelControlFrame", 0}
,{"CinematicPortrait", 0}
,{"CinematicPortraitBackground", 0}
,{"CinematicPortraitCover", 0}
,{"CinematicScenePanel", 0}
,{"CinematicSpeakerText", 0}
,{"CinematicTopBorder", 0}
,{"ColorBackdrop", 0}
,{"ColorBackdrop", 1}
,{"ColorBackdrop", 2}
,{"ColorBackdrop", 3}
,{"ColorBackdrop", 4}
,{"ColorBackdrop", 5}
,{"ColorBackdrop", 6}
,{"ColorBackdrop", 7}
,{"ColorBackdrop", 8}
,{"ColorBackdrop", 9}
,{"ColorBackdrop", 10}
,{"ColorBackdrop", 11}
,{"ColorBackdrop", 12}
,{"ColorBackdrop", 13}
,{"ColorBackdrop", 14}
,{"ColorBackdrop", 15}
,{"ColorBackdrop", 16}
,{"ColorBackdrop", 17}
,{"ColorBackdrop", 18}
,{"ColorBackdrop", 19}
,{"ColorBackdrop", 20}
,{"ColorBackdrop", 21}
,{"ColorBackdrop", 22}
,{"ColorBackdrop", 23}
,{"ColorBorder", 0}
,{"ColorBorder", 1}
,{"ColorBorder", 2}
,{"ColorBorder", 3}
,{"ColorBorder", 4}
,{"ColorBorder", 5}
,{"ColorBorder", 6}
,{"ColorBorder", 7}
,{"ColorBorder", 8}
,{"ColorBorder", 9}
,{"ColorBorder", 10}
,{"ColorBorder", 11}
,{"ColorBorder", 12}
,{"ColorBorder", 13}
,{"ColorBorder", 14}
,{"ColorBorder", 15}
,{"ColorBorder", 16}
,{"ColorBorder", 17}
,{"ColorBorder", 18}
,{"ColorBorder", 19}
,{"ColorBorder", 20}
,{"ColorBorder", 21}
,{"ColorBorder", 22}
,{"ColorBorder", 23}
,{"CommandBarFrame", 0}
,{"CommandButton_0", 0}
,{"CommandButton_1", 0}
,{"CommandButton_10", 0}
,{"CommandButton_11", 0}
,{"CommandButton_2", 0}
,{"CommandButton_3", 0}
,{"CommandButton_4", 0}
,{"CommandButton_5", 0}
,{"CommandButton_6", 0}
,{"CommandButton_7", 0}
,{"CommandButton_8", 0}
,{"CommandButton_9", 0}
,{"ConfirmQuitCancelButton", 0}
,{"ConfirmQuitCancelButtonText", 0}
,{"ConfirmQuitMessageText", 0}
,{"ConfirmQuitPanel", 0}
,{"ConfirmQuitQuitButton", 0}
,{"ConfirmQuitQuitButtonText", 0}
,{"ConfirmQuitTitleText", 0}
,{"ConsoleUI", 0}
,{"ConsoleUIBackdrop", 0}
,{"CustomKeysLabel", 0}
,{"CustomKeysValue", 0}
,{"DecoratedMapListBox", 0}
,{"DeleteCancelButton", 0}
,{"DeleteCancelButtonText", 0}
,{"DeleteDeleteButton", 0}
,{"DeleteDeleteButtonText", 0}
,{"DeleteMessageText", 0}
,{"DeleteOnly", 0}
,{"DeleteTitleText", 0}
,{"DifficultyLabel", 0}
,{"DifficultyValue", 0}
,{"EndGameButton", 0}
,{"EndGameButtonText", 0}
,{"EndGamePanel", 0}
,{"EndGameTitleText", 0}
,{"EnviroCheckBox", 0}
,{"EnviroLabel", 0}
,{"EscMenuBackdrop", 0}
,{"EscMenuDeleteContainer", 0}
,{"EscMenuMainPanel", 0}
,{"EscMenuOptionsPanel", 0}
,{"EscMenuOverwriteContainer", 0}
,{"EscMenuSaveGamePanel", 0}
,{"EscMenuSaveLoadContainer", 0}
,{"EscOptionsLightsMenu", 0}
,{"EscOptionsLightsPopupMenuArrow", 0}
,{"EscOptionsLightsPopupMenuBackdrop", 0}
,{"EscOptionsLightsPopupMenuDisabledBackdrop", 0}
,{"EscOptionsLightsPopupMenuMenu", 0}
,{"EscOptionsLightsPopupMenuTitle", 0}
,{"EscOptionsOcclusionMenu", 0}
,{"EscOptionsOcclusionPopupMenuArrow", 0}
,{"EscOptionsOcclusionPopupMenuBackdrop", 0}
,{"EscOptionsOcclusionPopupMenuDisabledBackdrop", 0}
,{"EscOptionsOcclusionPopupMenuMenu", 0}
,{"EscOptionsOcclusionPopupMenuTitle", 0}
,{"EscOptionsParticlesMenu", 0}
,{"EscOptionsParticlesPopupMenuArrow", 0}
,{"EscOptionsParticlesPopupMenuBackdrop", 0}
,{"EscOptionsParticlesPopupMenuDisabledBackdrop", 0}
,{"EscOptionsParticlesPopupMenuMenu", 0}
,{"EscOptionsParticlesPopupMenuTitle", 0}
,{"EscOptionsResolutionMenu", 0}
,{"EscOptionsResolutionPopupMenuArrow", 0}
,{"EscOptionsResolutionPopupMenuBackdrop", 0}
,{"EscOptionsResolutionPopupMenuDisabledBackdrop", 0}
,{"EscOptionsResolutionPopupMenuMenu", 0}
,{"EscOptionsResolutionPopupMenuTitle", 0}
,{"EscOptionsShadowsMenu", 0}
,{"EscOptionsShadowsPopupMenuArrow", 0}
,{"EscOptionsShadowsPopupMenuBackdrop", 0}
,{"EscOptionsShadowsPopupMenuDisabledBackdrop", 0}
,{"EscOptionsShadowsPopupMenuMenu", 0}
,{"EscOptionsShadowsPopupMenuTitle", 0}
,{"EscOptionsWindowModeMenu", 0}
,{"EscOptionsWindowModePopupMenuArrow", 0}
,{"EscOptionsWindowModePopupMenuBackdrop", 0}
,{"EscOptionsWindowModePopupMenuDisabledBackdrop", 0}
,{"EscOptionsWindowModePopupMenuMenu", 0}
,{"EscOptionsWindowModePopupMenuTitle", 0}
,{"ExitButton", 0}
,{"ExitButtonText", 0}
,{"ExtraHighLatencyLabel", 0}
,{"ExtraHighLatencyRadio", 0}
,{"FileListFrame", 0}
,{"FormationButton", 0}
,{"FormationToggleCheckBox", 0}
,{"FormationToggleLabel", 0}
,{"GameplayButton", 0}
,{"GameplayButtonText", 0}
,{"GameplayPanel", 0}
,{"GameplayTitleText", 0}
,{"GameSpeedLabel", 0}
,{"GameSpeedSlider", 0}
,{"GameSpeedValue", 0}
,{"GammaBrightLabel", 0}
,{"GammaDarkLabel", 0}
,{"GammaLabel", 0}
,{"GammaSlider", 0}
,{"GoldBackdrop", 0}
,{"GoldBackdrop", 1}
,{"GoldBackdrop", 2}
,{"GoldBackdrop", 3}
,{"GoldBackdrop", 4}
,{"GoldBackdrop", 5}
,{"GoldBackdrop", 6}
,{"GoldBackdrop", 7}
,{"GoldBackdrop", 8}
,{"GoldBackdrop", 9}
,{"GoldBackdrop", 10}
,{"GoldBackdrop", 11}
,{"GoldBackdrop", 12}
,{"GoldBackdrop", 13}
,{"GoldBackdrop", 14}
,{"GoldBackdrop", 15}
,{"GoldBackdrop", 16}
,{"GoldBackdrop", 17}
,{"GoldBackdrop", 18}
,{"GoldBackdrop", 19}
,{"GoldBackdrop", 20}
,{"GoldBackdrop", 21}
,{"GoldBackdrop", 22}
,{"GoldBackdrop", 23}
,{"GoldHeader", 0}
,{"GoldText", 0}
,{"GoldText", 1}
,{"GoldText", 2}
,{"GoldText", 3}
,{"GoldText", 4}
,{"GoldText", 5}
,{"GoldText", 6}
,{"GoldText", 7}
,{"GoldText", 8}
,{"GoldText", 9}
,{"GoldText", 10}
,{"GoldText", 11}
,{"GoldText", 12}
,{"GoldText", 13}
,{"GoldText", 14}
,{"GoldText", 15}
,{"GoldText", 16}
,{"GoldText", 17}
,{"GoldText", 18}
,{"GoldText", 19}
,{"GoldText", 20}
,{"GoldText", 21}
,{"GoldText", 22}
,{"GoldText", 23}
,{"HDCinematicBackground", 0}
,{"HDCinematicPortraitCover", 0}
,{"HealthBarsCheckBox", 0}
,{"HealthBarsLabel", 0}
,{"HelpButton", 0}
,{"HelpButtonText", 0}
,{"HelpOKButton", 0}
,{"HelpOKButtonText", 0}
,{"HelpPanel", 0}
,{"HelpTextArea", 0}
,{"HelpTitleText", 0}
,{"HighLatencyLabel", 0}
,{"HighLatencyRadio", 0}
,{"InfoPanelIconAllyFoodIcon", 7}
,{"InfoPanelIconAllyFoodValue", 7}
,{"InfoPanelIconAllyGoldIcon", 7}
,{"InfoPanelIconAllyGoldValue", 7}
,{"InfoPanelIconAllyTitle", 7}
,{"InfoPanelIconAllyUpkeep", 7}
,{"InfoPanelIconAllyWoodIcon", 7}
,{"InfoPanelIconAllyWoodValue", 7}
,{"InfoPanelIconBackdrop", 0}
,{"InfoPanelIconBackdrop", 1}
,{"InfoPanelIconBackdrop", 2}
,{"InfoPanelIconBackdrop", 3}
,{"InfoPanelIconBackdrop", 4}
,{"InfoPanelIconBackdrop", 5}
,{"InfoPanelIconHeroAgilityLabel", 6}
,{"InfoPanelIconHeroAgilityValue", 6}
,{"InfoPanelIconHeroIcon", 6}
,{"InfoPanelIconHeroIntellectLabel", 6}
,{"InfoPanelIconHeroIntellectValue", 6}
,{"InfoPanelIconHeroStrengthLabel", 6}
,{"InfoPanelIconHeroStrengthValue", 6}
,{"InfoPanelIconLabel", 0}
,{"InfoPanelIconLabel", 1}
,{"InfoPanelIconLabel", 2}
,{"InfoPanelIconLabel", 3}
,{"InfoPanelIconLabel", 4}
,{"InfoPanelIconLabel", 5}
,{"InfoPanelIconLevel", 0}
,{"InfoPanelIconLevel", 1}
,{"InfoPanelIconLevel", 2}
,{"InfoPanelIconLevel", 3}
,{"InfoPanelIconLevel", 4}
,{"InfoPanelIconLevel", 5}
,{"InfoPanelIconValue", 0}
,{"InfoPanelIconValue", 1}
,{"InfoPanelIconValue", 2}
,{"InfoPanelIconValue", 3}
,{"InfoPanelIconValue", 4}
,{"InfoPanelIconValue", 5}
,{"InsideConfirmQuitPanel", 0}
,{"InsideEndGamePanel", 0}
,{"InsideHelpPanel", 0}
,{"InsideMainPanel", 0}
,{"InsideTipsPanel", 0}
,{"InventoryButton_0", 0}
,{"InventoryButton_1", 0}
,{"InventoryButton_2", 0}
,{"InventoryButton_3", 0}
,{"InventoryButton_4", 0}
,{"InventoryButton_5", 0}
,{"InventoryCoverTexture", 0}
,{"InventoryText", 0}
,{"KeyScrollFastLabel", 0}
,{"KeyScrollLabel", 0}
,{"KeyScrollSlider", 0}
,{"KeyScrollSlowLabel", 0}
,{"LatencyInfo1", 0}
,{"LatencyInfo2", 0}
,{"Leaderboard", 0}
,{"LeaderboardBackdrop", 0}
,{"LeaderboardListContainer", 0}
,{"LeaderboardTitle", 0}
,{"LightsLabel", 0}
,{"LoadGameButton", 0}
,{"LoadGameButtonText", 0}
,{"LoadGameCancelButton", 0}
,{"LoadGameCancelButtonText", 0}
,{"LoadGameLoadButton", 0}
,{"LoadGameLoadButtonText", 0}
,{"LoadGameTitleText", 0}
,{"LoadOnly", 0}
,{"LogArea", 0}
,{"LogAreaBackdrop", 0}
,{"LogAreaScrollBar", 0}
,{"LogBackdrop", 0}
,{"LogDialog", 0}
,{"LogOkButton", 0}
,{"LogOkButtonText", 0}
,{"LogTitle", 0}
,{"LowLatencyLabel", 0}
,{"LowLatencyRadio", 0}
,{"LumberBackdrop", 0}
,{"LumberBackdrop", 1}
,{"LumberBackdrop", 2}
,{"LumberBackdrop", 3}
,{"LumberBackdrop", 4}
,{"LumberBackdrop", 5}
,{"LumberBackdrop", 6}
,{"LumberBackdrop", 7}
,{"LumberBackdrop", 8}
,{"LumberBackdrop", 9}
,{"LumberBackdrop", 10}
,{"LumberBackdrop", 11}
,{"LumberBackdrop", 12}
,{"LumberBackdrop", 13}
,{"LumberBackdrop", 14}
,{"LumberBackdrop", 15}
,{"LumberBackdrop", 16}
,{"LumberBackdrop", 17}
,{"LumberBackdrop", 18}
,{"LumberBackdrop", 19}
,{"LumberBackdrop", 20}
,{"LumberBackdrop", 21}
,{"LumberBackdrop", 22}
,{"LumberBackdrop", 23}
,{"LumberHeader", 0}
,{"LumberText", 0}
,{"LumberText", 1}
,{"LumberText", 2}
,{"LumberText", 3}
,{"LumberText", 4}
,{"LumberText", 5}
,{"LumberText", 6}
,{"LumberText", 7}
,{"LumberText", 8}
,{"LumberText", 9}
,{"LumberText", 10}
,{"LumberText", 11}
,{"LumberText", 12}
,{"LumberText", 13}
,{"LumberText", 14}
,{"LumberText", 15}
,{"LumberText", 16}
,{"LumberText", 17}
,{"LumberText", 18}
,{"LumberText", 19}
,{"LumberText", 20}
,{"LumberText", 21}
,{"LumberText", 22}
,{"LumberText", 23}
,{"MainPanel", 0}
,{"MapListBoxBackdrop", 0}
,{"MapListScrollBar", 0}
,{"MiniMapAllyButton", 0}
,{"MinimapButtonBar", 0}
,{"MiniMapCreepButton", 0}
,{"MiniMapFrame", 0}
,{"MinimapSignalButton", 0}
,{"MiniMapTerrainButton", 0}
,{"ModelDetailLabel", 0}
,{"ModelDetailValue", 0}
,{"MouseScrollDisable", 0}
,{"MouseScrollDisableLabel", 0}
,{"MouseScrollFastLabel", 0}
,{"MouseScrollLabel", 0}
,{"MouseScrollSlider", 0}
,{"MouseScrollSlowLabel", 0}
,{"MovementCheckBox", 0}
,{"MovementLabel", 0}
,{"Multiboard", 0}
,{"MultiboardBackdrop", 0}
,{"MultiboardListContainer", 0}
,{"MultiboardMinimizeButton", 0}
,{"MultiboardTitle", 0}
,{"MultiboardTitleBackdrop", 0}
,{"MusicCheckBox", 0}
,{"MusicVolumeHighLabel", 0}
,{"MusicVolumeLabel", 0}
,{"MusicVolumeLowLabel", 0}
,{"MusicVolumeSlider", 0}
,{"NetworkButton", 0}
,{"NetworkButtonText", 0}
,{"NetworkLabel", 0}
,{"NetworkPanel", 0}
,{"NetworkTitleText", 0}
,{"OcclusionLabel", 0}
,{"OKButtonText", 0}
,{"OptionsButton", 0}
,{"OptionsButtonText", 0}
,{"OptionsCancelButton", 0}
,{"OptionsOKButton", 0}
,{"OptionsPanel", 0}
,{"OptionsPreviousButton", 0}
,{"OptionsPreviousButtonText", 0}
,{"OptionsTitleText", 0}
,{"OverwriteCancelButton", 0}
,{"OverwriteCancelButtonText", 0}
,{"OverwriteMessageText", 0}
,{"OverwriteOnly", 0}
,{"OverwriteOverwriteButton", 0}
,{"OverwriteOverwriteButtonText", 0}
,{"OverwriteTitleText", 0}
,{"ParticlesLabel", 0}
,{"PauseButton", 0}
,{"PauseButtonText", 0}
,{"PlayerNameLabel", 0}
,{"PlayerNameLabel", 1}
,{"PlayerNameLabel", 2}
,{"PlayerNameLabel", 3}
,{"PlayerNameLabel", 4}
,{"PlayerNameLabel", 5}
,{"PlayerNameLabel", 6}
,{"PlayerNameLabel", 7}
,{"PlayerNameLabel", 8}
,{"PlayerNameLabel", 9}
,{"PlayerNameLabel", 10}
,{"PlayerNameLabel", 11}
,{"PlayerNameLabel", 12}
,{"PlayerNameLabel", 13}
,{"PlayerNameLabel", 14}
,{"PlayerNameLabel", 15}
,{"PlayerNameLabel", 16}
,{"PlayerNameLabel", 17}
,{"PlayerNameLabel", 18}
,{"PlayerNameLabel", 19}
,{"PlayerNameLabel", 20}
,{"PlayerNameLabel", 21}
,{"PlayerNameLabel", 22}
,{"PlayerNameLabel", 23}
,{"PlayersHeader", 0}
,{"PositionalCheckBox", 0}
,{"PositionalLabel", 0}
,{"PreviousButton", 0}
,{"PreviousButtonText", 0}
,{"ProviderLabel", 0}
,{"ProviderValue", 0}
,{"QuestAcceptButton",0}
,{"QuestAcceptButtonText",0}
,{"QuestBackdrop",0}
,{"QuestDetailsTitle",0}
,{"QuestDialog",0}
,{"QuestDisplay",0}
,{"QuestDisplayBackdrop",0}
,{"QuestDisplayScrollBar",0}
,{"QuestItemListContainer",0}
,{"QuestItemListItem",6}
,{"QuestItemListItem",7}
,{"QuestItemListItem",8}
,{"QuestItemListItem",9}
,{"QuestItemListItemTitle",6}
,{"QuestItemListItemTitle",7}
,{"QuestItemListItemTitle",8}
,{"QuestItemListItemTitle",9}
,{"QuestItemListScrollBar",0}
,{"QuestListItem",0}
,{"QuestListItem",1}
,{"QuestListItem",2}
,{"QuestListItem",3}
,{"QuestListItem",4}
,{"QuestListItem",5}
,{"QuestListItemBorder",0}
,{"QuestListItemBorder",1}
,{"QuestListItemBorder",2}
,{"QuestListItemBorder",3}
,{"QuestListItemBorder",4}
,{"QuestListItemBorder",5}
,{"QuestListItemButton",0}
,{"QuestListItemButton",1}
,{"QuestListItemButton",2}
,{"QuestListItemButton",3}
,{"QuestListItemButton",4}
,{"QuestListItemButton",5}
,{"QuestListItemComplete",0}
,{"QuestListItemComplete",1}
,{"QuestListItemComplete",2}
,{"QuestListItemComplete",3}
,{"QuestListItemComplete",4}
,{"QuestListItemComplete",5}
,{"QuestListItemCompletedHighlight",0}
,{"QuestListItemCompletedHighlight",1}
,{"QuestListItemCompletedHighlight",2}
,{"QuestListItemCompletedHighlight",3}
,{"QuestListItemCompletedHighlight",4}
,{"QuestListItemCompletedHighlight",5}
,{"QuestListItemFailedHighlight",0}
,{"QuestListItemFailedHighlight",1}
,{"QuestListItemFailedHighlight",2}
,{"QuestListItemFailedHighlight",3}
,{"QuestListItemFailedHighlight",4}
,{"QuestListItemFailedHighlight",5}
,{"QuestListItemIconContainer",0}
,{"QuestListItemIconContainer",1}
,{"QuestListItemIconContainer",2}
,{"QuestListItemIconContainer",3}
,{"QuestListItemIconContainer",4}
,{"QuestListItemIconContainer",5}
,{"QuestListItemSelectedHighlight",0}
,{"QuestListItemSelectedHighlight",1}
,{"QuestListItemSelectedHighlight",2}
,{"QuestListItemSelectedHighlight",3}
,{"QuestListItemSelectedHighlight",4}
,{"QuestListItemSelectedHighlight",5}
,{"QuestListItemTitle",0}
,{"QuestListItemTitle",1}
,{"QuestListItemTitle",2}
,{"QuestListItemTitle",3}
,{"QuestListItemTitle",4}
,{"QuestListItemTitle",5}
,{"QuestMainContainer",0}
,{"QuestMainListScrollBar",0}
,{"QuestMainTitle",0}
,{"QuestOptionalContainer",0}
,{"QuestOptionalListScrollBar",0}
,{"QuestOptionalTitle",0}
,{"QuestSubtitleValue",0}
,{"QuestTitleValue",0}
,{"QuitButton", 0}
,{"QuitButtonText", 0}
,{"ResolutionLabel", 0}
,{"ResourceBarFrame", 0}
,{"ResourceBarGoldText", 0}
,{"ResourceBarLumberText", 0}
,{"ResourceBarSupplyText", 0}
,{"ResourceBarUpkeepText", 0}
,{"ResourceTradingTitle", 0}
,{"RestartButton", 0}
,{"RestartButtonText", 0}
,{"ReturnButton", 0}
,{"ReturnButtonText", 0}
,{"SaveAndLoad", 0}
,{"SaveGameButton", 0}
,{"SaveGameButtonText", 0}
,{"SaveGameCancelButton", 0}
,{"SaveGameCancelButtonText", 0}
,{"SaveGameDeleteButton", 0}
,{"SaveGameDeleteButtonText", 0}
,{"SaveGameFileEditBox", 0}
,{"SaveGameFileEditBoxText", 0}
,{"SaveGameSaveButton", 0}
,{"SaveGameSaveButtonText", 0}
,{"SaveGameTitleText", 0}
,{"SaveOnly", 0}
,{"ShadowsLabel", 0}
,{"SimpleBuildingActionLabel", 0}
,{"SimpleBuildingActionLabel", 1}
,{"SimpleBuildingDescriptionValue", 1}
,{"SimpleBuildingNameValue", 1}
,{"SimpleBuildQueueBackdrop", 1}
,{"SimpleBuildTimeIndicator", 0}
,{"SimpleBuildTimeIndicator", 1}
,{"SimpleClassValue", 0}
,{"SimpleDestructableNameValue", 4}
,{"SimpleHeroLevelBar", 0}
,{"SimpleHoldDescriptionValue", 2}
,{"SimpleHoldNameValue", 2}
,{"SimpleInfoPanelBuildingDetail", 1}
,{"SimpleInfoPanelCargoDetail", 2}
,{"SimpleInfoPanelDestructableDetail", 4}
,{"SimpleInfoPanelIconAlly", 7}
,{"SimpleInfoPanelIconArmor", 2}
,{"SimpleInfoPanelIconDamage", 0}
,{"SimpleInfoPanelIconDamage", 1}
,{"SimpleInfoPanelIconFood", 4}
,{"SimpleInfoPanelIconGold", 5}
,{"SimpleInfoPanelIconHero", 6}
,{"SimpleInfoPanelIconHeroText", 6}
,{"SimpleInfoPanelIconRank", 3}
,{"SimpleInfoPanelItemDetail", 3}
,{"SimpleInfoPanelUnitDetail", 0}
,{"SimpleInventoryBar", 0}
,{"SimpleInventoryCover", 0}
,{"SimpleItemDescriptionValue", 3}
,{"SimpleItemNameValue", 3}
,{"SimpleNameValue", 0}
,{"SimpleProgressIndicator", 0}
,{"SimpleUnitStatsPanel", 0}
,{"SoundButton", 0}
,{"SoundButtonText", 0}
,{"SoundCheckBox", 0}
,{"SoundPanel", 0}
,{"SoundTitleText", 0}
,{"SoundVolumeHighLabel", 0}
,{"SoundVolumeLabel", 0}
,{"SoundVolumeLowLabel", 0}
,{"SoundVolumeSlider", 0}
,{"SubgroupCheckBox", 0}
,{"SubgroupLabel", 0}
,{"SubtitlesCheckBox", 0}
,{"SubtitlesLabel", 0}
,{"TextureQualityLabel", 0}
,{"TextureQualityValue", 0}
,{"TipsBackButton", 0}
,{"TipsBackButtonText", 0}
,{"TipsButton", 0}
,{"TipsButtonText", 0}
,{"TipsNextButton", 0}
,{"TipsNextButtonText", 0}
,{"TipsOKButton", 0}
,{"TipsOKButtonText", 0}
,{"TipsPanel", 0}
,{"TipsTextArea", 0}
,{"TipsTitleText", 0}
,{"TooltipsCheckBox", 0}
,{"TooltipsLabel", 0}
,{"UnitCheckBox", 0}
,{"UnitLabel", 0}
,{"UnitsCheckBox", 0}
,{"UnitsCheckBox", 1}
,{"UnitsCheckBox", 2}
,{"UnitsCheckBox", 3}
,{"UnitsCheckBox", 4}
,{"UnitsCheckBox", 5}
,{"UnitsCheckBox", 6}
,{"UnitsCheckBox", 7}
,{"UnitsCheckBox", 8}
,{"UnitsCheckBox", 9}
,{"UnitsCheckBox", 10}
,{"UnitsCheckBox", 11}
,{"UnitsCheckBox", 12}
,{"UnitsCheckBox", 13}
,{"UnitsCheckBox", 14}
,{"UnitsCheckBox", 15}
,{"UnitsCheckBox", 16}
,{"UnitsCheckBox", 17}
,{"UnitsCheckBox", 18}
,{"UnitsCheckBox", 19}
,{"UnitsCheckBox", 20}
,{"UnitsCheckBox", 21}
,{"UnitsCheckBox", 22}
,{"UnitsCheckBox", 23}
,{"UnitsHeader", 0}
,{"UpperButtonBarAlliesButton", 0}
,{"UpperButtonBarChatButton", 0}
,{"UpperButtonBarFrame", 0}
,{"UpperButtonBarMenuButton", 0}
,{"UpperButtonBarQuestsButton", 0}
,{"VideoButton", 0}
,{"VideoButtonText", 0}
,{"VideoPanel", 0}
,{"VideoTitleText", 0}
,{"VisionCheckBox", 0}
,{"VisionCheckBox", 1}
,{"VisionCheckBox", 2}
,{"VisionCheckBox", 3}
,{"VisionCheckBox", 4}
,{"VisionCheckBox", 5}
,{"VisionCheckBox", 6}
,{"VisionCheckBox", 7}
,{"VisionCheckBox", 8}
,{"VisionCheckBox", 9}
,{"VisionCheckBox", 10}
,{"VisionCheckBox", 11}
,{"VisionCheckBox", 12}
,{"VisionCheckBox", 13}
,{"VisionCheckBox", 14}
,{"VisionCheckBox", 15}
,{"VisionCheckBox", 16}
,{"VisionCheckBox", 17}
,{"VisionCheckBox", 18}
,{"VisionCheckBox", 19}
,{"VisionCheckBox", 20}
,{"VisionCheckBox", 21}
,{"VisionCheckBox", 22}
,{"VisionCheckBox", 23}
,{"VisionHeader", 0}
,{"VSyncCheckBox", 0}
,{"VSyncLabel", 0}
,{"WindowModeLabel", 0}
,{"WouldTheRealOptionsTitleTextPleaseStandUp", 0}
}</code></pre>
                                </div>
                            </div>
                        </div>

                    </div>
                </div><br>
                <br>
                There are also 2 further ways to access frames one
                is <a href="javascript:;" data-hash="AccessFramesOriginFrame">BlzGetOriginFrame</a>
                which allows to get frames Blizzard provided a
                special access to. And new with Warcraft 3 V1.32.6
                one can get a childFrame at an index. Using this 2
                natives;<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameGetChildrenCount</span>                    <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">integer</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameGetChild</span>                            <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">integer</span> index <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">framehandle</span></code></pre>
                    </div>
                </div><br>
                <a id="AccessFramesLumberText"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Change Text in Resource Lumber
                    </h3>
                </span>This is a small example to change the
                displayed Text in the Lumber ResourceField at top
                Right of the screen. The first thing one has to do
                is to get a reference to the wanted Frame. Here
                <code class="bbCodeInline">BlzGetFrameByName</code>
                is used. After that one uses <code
                    class="bbCodeInline">BlzFrameSetText takes framehandle frame, string text returns nothing</code>
                with the wanted result and it is done.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- get the frame named "ResourceBarLumberText" with creationcontext 0</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ResourceBarLumberText"</span> <span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span> 
<span class="prism-token prism-comment">-- change the current displayed Text to "Lumber"</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>frame <span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Lumber"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                When having the Lua code in your map your screen
                should look kinda like that.<br>













                <div class="bbImageWrapper  js-lbImage" title="lumberchanged-jpg.324068"
                    data-src="https://www.hiveworkshop.com/attachments/lumberchanged-jpg.324068/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;lumberchanged-jpg.324068&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/LumberChanged.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/lumberchanged-jpg.324068/" class="bbImage"
                        data-zoom-target="1" style="" alt="lumberchanged-jpg.324068" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                As soon the local player needs to update the lumber
                text, your custom text will be lost.<br>
                <br>
                One could also change the text shown in the other
                resourceboxes, By using a different name inside
                BlzGetFrameByName.<br>
                <ul>
                    <li data-xf-list-type="ul">For Gold use:
                        "ResourceBarGoldText"</li>
                    <li data-xf-list-type="ul">Lumber is named
                        "ResourceBarLumberText"</li>
                    <li data-xf-list-type="ul">Food is
                        "ResourceBarSupplyText"</li>
                    <li data-xf-list-type="ul">For the box showing
                        the Upkeep level (no, low, high) use
                        "ResourceBarUpkeepText"</li>
                </ul>Using BlzGetFrameByName for only one player can
                desync the game, hence it is recommended to set it
                to variable before the GetLocalPlayer Block and
                using that variable inside the Local Block.<br>
                <br>
                <a id="AccessFramesUnitInfo"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Unit Info Panel
                    </h3>
                </span>The Unit Info Panel the one at the bottom
                center of the UI when only one unit is selected can
                be found in the fdf
                "ui\framedef\ui\simpleinfopanel.fdf". They are all
                SimpleFrames. <br>
                BlzGetFrameByName("SimpleInfoPanelIconDamage",0)<br>
                "SimpleInfoPanelIconDamage",1<br>
                "SimpleInfoPanelIconArmor",2<br>
                "SimpleInfoPanelIconRank",3<br>
                "SimpleInfoPanelIconFood",4<br>
                "SimpleInfoPanelIconGold",5<br>
                <br>
                This frames are shown/hidden based on the current's
                units features.<br>
                <br>
                They have Child-Frames with the same names, only the
                createContext differs.<br>
                <br>
                "InfoPanelIconBackdrop" the image<br>
                "InfoPanelIconLevel" the shown techLevel (text)<br>
                "InfoPanelIconLabel" Damage/Armor..<br>
                "InfoPanelIconValue" the amount<br>













                <div class="bbImageWrapper  js-lbImage" title="attackicon-jpg.324222"
                    data-src="https://www.hiveworkshop.com/attachments/attackicon-jpg.324222/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;attackicon-jpg.324222&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Attackicon.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/attackicon-jpg.324222/" class="bbImage"
                        data-zoom-target="1" style="" alt="attackicon-jpg.324222" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <code class="bbCodeInline">BlzGetFrameByName("InfoPanelIconBackdrop", 0)</code>
                would access the iconFrame of Attack 1 (object
                Editor).<br>
                Moving this UnitInfo frames is best done by moving
                the IconFrames: "InfoPanelIconBackdrop", Because The
                Texts pos themself relative to the IconFrame and the
                Container Frames like "SimpleInfoPanelIconDamage"
                are frequently reposed based on the current Unit's
                need. With breaking the bound from the Icon to the
                container one still has the whole functionality but
                total control over the position.<br>
                One can read and write onto this Frames but except
                for "InfoPanelIconLabel" the game update the
                displayed content of this frames very often. One
                could get rid of some of this displayed Texts by
                using BlzFrameSetFont(frame, "",0,0) onto it, or by
                moving it away. When one reads this Text one has to
                remember that the displayed value is a local only
                thing for anyone having a different unit selected
                the value will not match, so be careful what you do
                with that.<br>
                <br>
                All of the UnitInfo-Hero Frames use 6 as
                CreateContext.<br>
                "SimpleInfoPanelIconHero" is the container.<br>
                "InfoPanelIconHeroIcon" is the Big Icon showing the
                primary Attribute.<br>
                "SimpleInfoPanelIconHeroText" is an additional
                logical container Frame for the Attribute
                String-Frames.<br>
                <br>
                The visibility of the container Frames are a way to
                know that the local player has selected one hero
                only. Or a good Parent for custom SimpleFrames
                displaying something for heroes only.<br>
                <br>
                "InfoPanelIconHeroStrengthLabel"<br>
                "InfoPanelIconHeroStrengthValue"<br>
                "InfoPanelIconHeroAgilityLabel"<br>
                "InfoPanelIconHeroAgilityValue"<br>
                "InfoPanelIconHeroIntellectLabel"<br>
                "InfoPanelIconHeroIntellectValue"<br>
                <br>
                The alliance info when having one allied building
                selected, all of them use CreateContext 7.<br>
                "SimpleInfoPanelIconAlly", 7<br>
                "InfoPanelIconAllyTitle"<br>
                "InfoPanelIconAllyGoldIcon"<br>
                "InfoPanelIconAllyGoldValue"<br>
                "InfoPanelIconAllyWoodIcon"<br>
                "InfoPanelIconAllyWoodValue"<br>
                "InfoPanelIconAllyFoodIcon"<br>
                "InfoPanelIconAllyFoodValue"<br>
                "InfoPanelIconAllyUpkeep"<br>
                The Textures are anchored to the previous Textures
                and the Strings next to the Textures. Except for
                "InfoPanelIconAllyTitle" &amp;
                "InfoPanelIconAllyGoldIcon" this are anchored to
                "SimpleInfoPanelIconAlly".<br>
                This frames update as soon the local player selects
                an allied building. The update includes setting the
                text for the Value SimpleFrames and reposing
                ("SimpleInfoPanelIconAlly", 7).<br>
                <br>
                This are other SimpleFrames in that unit info
                frame.<br>
                "SimpleInfoPanelUnitDetail", 0<br>
                "SimpleNameValue", 0 The name at the top<br>
                <div style="margin-left: 20px">Anchor TOP​</div>
                "SimpleHeroLevelBar", 0 Exp bar has values from 0 to
                1.0<br>
                <div style="margin-left: 20px">TOP,
                    "SimpleNameValue", BOTTOM​</div>
                "SimpleProgressIndicator", 0 Remaing Time bar from 0
                to 1.0<br>
                <div style="margin-left: 20px">TOP,
                    "SimpleNameValue", BOTTOM​</div>
                "SimpleBuildTimeIndicator", 0<br>
                <div style="margin-left: 20px">TOPLEFT,
                    "SimpleInfoPanelUnitDetail", TOPLEFT, 0.061250,
                    -0.038125,​</div>"SimpleBuildingActionLabel",
                0<br>
                <div style="margin-left: 20px">CENTER,
                    "SimpleInfoPanelUnitDetail", TOPLEFT, 0.11375,
                    -0.029875,​</div>"SimpleUnitStatsPanel", 0
                parent of SimpleClassValue<br>
                "SimpleClassValue", 0 The displayed Text below the
                name (in the bar).<br>
                <div style="margin-left: 20px">TOP,
                    "SimpleNameValue", BOTTOM​</div><br>
                There are also other Frames shown at the bottom
                center UI, instead of "SimpleInfoPanelUnitDetail",
                they and "SimpleInfoPanelUnitDetail" share one
                Parent.<br>
                <br>
                "SimpleInfoPanelBuildingDetail", 1<br>
                <div style="margin-left: 20px">This Frame is shown
                    when one unit is selected and it trains
                    something.<br>
                    "SimpleBuildingNameValue", 1<br>
                    <div style="margin-left: 20px">Anchor TOP​</div>
                    "SimpleBuildingDescriptionValue", 1<br>
                    <div style="margin-left: 20px">TOP,
                        "SimpleBuildingNameValue", BOTTOM​</div>
                    "SimpleBuildTimeIndicator", 1<br>
                    <div style="margin-left: 20px">TOPLEFT,
                        "SimpleInfoPanelBuildingDetail", TOPLEFT,
                        0.061250, -0.038125​</div>
                    "SimpleBuildingActionLabel", 1<br>
                    <div style="margin-left: 20px">CENTER,
                        "SimpleInfoPanelBuildingDetail", TOPLEFT,
                        0.11375, -0.029875​</div>
                    "SimpleBuildQueueBackdropFrame", 1<br>
                    "SimpleBuildQueueBackdrop", 1<br>
                    <div style="margin-left: 20px">SetPoint
                        BOTTOMLEFT, "SimpleInfoPanelBuildingDetail",
                        BOTTOMLEFT<br>
                        BOTTOMRIGHT,
                        "SimpleInfoPanelBuildingDetail",
                        BOTTOMRIGHT​</div>
                </div><br>
                "SimpleInfoPanelCargoDetail", 2<br>
                <div style="margin-left: 20px">This Frame is shown
                    when one unit is selected and it transports
                    units.<br>
                    "SimpleHoldNameValue", 2<br>
                    <div style="margin-left: 20px">Anchor TOP​</div>
                    "SimpleHoldDescriptionValue", 2<br>
                    <div style="margin-left: 20px">TOP,
                        "SimpleHoldNameValue", BOTTOM​</div>
                </div><br>
                <br>
                "SimpleInfoPanelItemDetail", 3<br>
                <div style="margin-left: 20px">This Frame is shown
                    when an item on the ground is selected.<br>
                    "SimpleItemNameValue", 3<br>
                    <div style="margin-left: 20px">Anchor TOP​</div>
                    "SimpleItemDescriptionValue", 3<br>
                    <div style="margin-left: 20px">TOP,
                        "SimpleItemNameValue", BOTTOM​</div>
                </div><br>
                "SimpleInfoPanelDestructableDetail", 4<br>
                <div style="margin-left: 20px">This Frame is shown
                    when a destructable is selected (like a Gate,
                    cage etc).<br>
                    "SimpleDestructableNameValue", 4<br>
                    <div style="margin-left: 20px">Anchor TOP​</div>
                </div><br>
                <a id="AccessFramesByChild"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Access Frames by Child
                    </h3>
                </span>Warcraft 3 Patch 1.32.6 added 2 new Frame
                natives.<br>
                <br>
                <code class="bbCodeInline">BlzFrameGetChildrenCount(frame) -&gt; integer</code><br>
                <div style="margin-left: 20px">Returns the amount of
                    non String/Texture childFrames.​</div><code
                    class="bbCodeInline">BlzFrameGetChild (frame, index) -&gt; frame</code><br>
                <div style="margin-left: 20px">Returns the non
                    String/Texture childFrame with that index:
                    should be called with 0 to
                    BlzFrameGetChildrenCount(frame) - 1.
                    Child-Frames take Indexes based on their Level.
                    The child with the lowest Level takes the lowest
                    index.​</div><br>
                This natives include inherited ChildFrames which
                couldn't be found with BlzGetFrameByName. Now we can
                actually know why, because the inherited Frames lost
                their name.<br>
                BlzFrameGetChild has some limit (in 1.32.6), it is
                not able to find String/Texture childs of
                SimpleFrames. Additional On first sight it looks
                like the indexes taken by childs are wierd, but it
                follows rules.<br>
                The rules are: The Child with the highest Level
                takes the highest index. If multiple children have
                the same Level the last added takes the highest of
                them.<br>
                Haven't tested so many types yet, but now to
                GLUETEXTBUTTON. The example Button is
                ScriptDialogButton, using BlzFrameGetChildrenCount
                onto such returns 6 (4 Backdrop, 1 Text and 1
                Highlight). The Backdrops and the Highlight won't
                have names when testing with ScriptDialogButton,
                because they were inherited from
                EscMenuButtonTemplate, in case you do a test and
                might wonder.<br>
                An Lua example code creates a ScriptDialogButton
                after that looping all found childs for each print
                the index &amp; name.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"text"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">for</span> int <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span> <span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span>int<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> int<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>The Example code should print this:<br>
                0<br>
                1<br>
                2<br>
                3<br>
                4 ScriptDialogButtonText<br>
                5<br>
                <br>
                GLUETEXTBUTTON have a fixed order for their
                Children, regardless how they are placed in fdf.
                First all set ControlBackdrops use indexes, after
                them a TEXT child follows, regardless if your Button
                got one in fdf, after the TEXT all loose children
                are listed, in the ordered they were added. A loose
                Frame with a lower line number in fdf is added
                before one with a higher line number. At the end the
                highlight Frames are placed.<br>
                When one does not set a functional BACKDROP then the
                total amount of slots taken reduces. But even an
                empty GLUETEXTBUTTON will have 1 child-Frame the
                TEXT.<br>
                Any Frame you add by code counts as loose Frame and
                will be placed to the end of the loose FrameList
                with that also pushing the indexes of the possible
                Highlight ChildFrames.<br>
                <br>


                <div class="bbCodeSpoiler">
                    <button type="button" class="bbCodeSpoiler-button button--longText button" data-xf-click="toggle"
                        data-xf-init="tooltip" data-original-title="Click to reveal or hide spoiler"
                        id="js-XFUniqueId52"><span class="button-text">

                            <span><span class="bbCodeSpoiler-button-title">some
                                    story</span></span>
                        </span></button>
                    <div class="bbCodeSpoiler-content">
                        <div class="bbCodeBlock bbCodeBlock--spoiler">
                            <div class="bbCodeBlock-content"><br>
                                the Text child is at index 4 (which
                                is a bit wierd The inherited Button
                                got 5 childs, for some reason the
                                highlight was pushed to index 5).
                                Maybe it has to do with Level have
                                to check. No, I now created
                                "EscMenuButtonTemplate" the one
                                ScriptDialogButton inherits and the
                                game tells this thing would have 6
                                Childs but in fdf there are only 5,
                                it seems like the Text-Child is on
                                default created for that
                                GLUETEXTBUTTON Type. Frame
                                "GLUETEXTBUTTON" "MyButton" {} has
                                one child according to the native,
                                when moving the child it moves the
                                text out of the button.<br>
                                The inherited childFrames also
                                forget their names (logical
                                otherwise one could use
                                BlzGetFrameByName onto them).<br>
                                The childFrames of a GLUETEXTBUTTON
                                are sorted, backdrops, text,
                                highlight.<br>
                                The highlight frames are pushed to
                                the highest indexes while the text
                                takes the slot after the
                                backdrops.<br>
                                The Loose childFrames are placed in
                                the order they were found and added
                                after the text, regardless if by
                                code or fdf.<br>
                            </div>
                        </div>
                    </div>
                </div><br>
                In the image a custom GLUETEXTBUTTON was written in
                fdf to do the test which you can see at the right
                part of the image.<br>













                <div class="bbImageWrapper  js-lbImage" title="wierd-childframe-order-jpg.356778"
                    data-src="https://www.hiveworkshop.com/attachments/wierd-childframe-order-jpg.356778/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;wierd-childframe-order-jpg.356778&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Wierd Childframe Order.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/wierd-childframe-order-jpg.356778/"
                        class="bbImage" data-zoom-target="1" style="" alt="wierd-childframe-order-jpg.356778" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                After creating 2 Loose childFrames with code using
                BlzCreateFrameByType, The childs use this
                indexes:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"FRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CodeFrameA"</span><span class="prism-token prism-punctuation">,</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"FRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CodeFrameB"</span><span class="prism-token prism-punctuation">,</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="child-order2-jpg.356780"
                    data-src="https://www.hiveworkshop.com/attachments/child-order2-jpg.356780/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;child-order2-jpg.356780&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Child Order2.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/child-order2-jpg.356780/" class="bbImage"
                        data-zoom-target="1" style="" alt="child-order2-jpg.356780" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                <br>
                A Lua function to iterate /print childs of a frame
                and their childs.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">PrintChildFrames</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> prefix<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span>prefix<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">&gt;</span> <span class="prism-token prism-number">0</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-keyword">for</span> int <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span> <span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-function">PrintChildFrames</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> int<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> prefix<span class="prism-token prism-operator">..</span><span class="prism-token prism-string">"."</span><span class="prism-token prism-operator">..</span>int<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>One could change it to write to a file by
                replacing print with Preload<br>
                The inital call would then be PreloadGenStart
                PrintChildFrames PreloadGenEnd<br>
                <br>
                WARNING<br>
                in 1.32.6 exists a bug. BlzGetOriginFrame does not
                return a valid frame (GetHandleId 0) when one got
                the expected originframe over BlzFrameGetChild
                first.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frameA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frameAA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>frameA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frameAAA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>frameAA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frameB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_PORTRAIT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span>frameAA<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span>frameAAA<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span>frameB<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span>frameAAA <span class="prism-token prism-operator">==</span> frameB<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"done"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>when one pushes frameB before frameAAA it
                works as wanted/expected, but right now frameB would
                be nil/GetHandleId 0.<br>
                <br>
                Results of tests using BlzFrameGetChild.<br>
                Names useable in BlzGetFrameByName are written like
                that "Name". [0 to x] includes 0 and x.<br>
                <a id="AccessFramesByChildTable"></a><br>



                <div class="bbcode-tabs" data-xf-init="tabs-tag">
                    <div class="titles">

                        <h3 data-id="0" class="active">ConsoleUI
                        </h3>

                        <h3 data-id="1" class="">BottomCenterUI</h3>

                        <h3 data-id="2" class="">GAME_UI</h3>

                        <h3 data-id="3" class="">Game UI Simple</h3>

                        <h3 data-id="4" class="">TOOLTIP</h3>

                    </div>
                    <div class="bodies">

                        <div data-id="0" class="active">








                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Code:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Children of "ConsoleUI"/ORIGIN_FRAME_SIMPLE_UI_PARENT
Count: 8 to 9
[0] "CommandBarFrame",0
Before an unit was selected "CommandBarFrame" has 24 childs "CommandButton_0" to "CommandButton_11" and (ORIGIN_FRAME_COMMAND_BUTTON,0 to 11)
After an unit was selected ORIGIN_FRAME_COMMAND_BUTTONs become children of "CommandButton_0" to "CommandButton_11"
[0 to 11] "CommandButton_0",0 to "CommandButton_11",0
[0] ORIGIN_FRAME_COMMAND_BUTTON
Created when required
[0] Cooldown
[1]
[2] ChargeBox			
[1] BottomCenter UI parent (unit info- Inventory)
[2] "ResourceBarFrame",0
[0] Mouse Listener (Gold)
[1] Mouse Listener (Lumber)
[2] Mouse Listener (UpKeep)
[3] Mouse Listener (Food)
[???] Fps/Apm/Ping display
[3] "UpperButtonBarFrame",0
[0] Quest/"UpperButtonBarQuestsButton",0
[1] Menu/"UpperButtonBarMenuButton",0
[2] Alliance/"UpperButtonBarAlliesButton",0
[3] Log/"UpperButtonBarChatButton",0
[4] "MiniMapButtonBar",0
[0 to 4] Buttons 0(Top), 4(Bottom)
[5] command button mouse deadzone
[6] Hero ButtonBar
[0 to 6] HeroButtons
[0] HP-Bar
[1] MP-Bar
[2] Unspent-SkillPointsBox (only when this slot ever had unspent SkillPoints)
[7] Idle worker Button Container
[0] Button
[0] Charges Box (created with the first idle worker)
[8] World Object Hover info (exist after any object was hovered with the mouse)</code></pre>
                                </div>
                            </div>
                        </div>

                        <div data-id="1" class="">








                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Code:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Children of BottomCenterUI
Count: 8
[0] Single Unit "SimpleInfoPanelUnitDetail"
[0] "SimpleHeroLevelBar",0
[0] visual bar
[1] The Exp-Tooltipbox
[1] "SimpleProgressIndicator",0
[0] visual Box
[2] "SimpleBuildTimeIndicator",0
[0]
[3] "SimpleUnitStatsPanel",0
[x] "SimpleClassValue",0
[4] "SimpleInfoPanelIconDamage",0
[0] Mouse Listener
[5] "SimpleInfoPanelIconDamage",1
[0] Mouse Listener
[6] "SimpleInfoPanelIconArmor",2
[0] Mouse Listener
[7] "SimpleInfoPanelIconRank",3
[0] Mouse Listener
[8] "SimpleInfoPanelIconFood",4
[0] Mouse Listener
[9 "SimpleInfoPanelIconGold",5
[0] Mouse Listener
[10] "SimpleInfoPanelIconHero",6	
[0] "SimpleInfoPanelIconHeroText",6
[1] Mouse Listener
[11] "SimpleInfoPanelIconAlly",7
[0] Gold - Mouse Listener
[1] Lumber - Mouse Listener
[2] Food - Mouse Listener
[3] UpKeep - Mouse Listener
[12] ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR
[0 to 7] BuffIcons + mouse Listeners
[x] ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL
[13]
[1] Trainer "SimpleInfoPanelBuildingDetail",1
[0] "SimpleBuildTimeIndicator",1
[0] Bar Border
[1] Que Button Backgrounds
[2] Que Button next to the Progressbar
[3]	Que Bottom Button Container
[0 to 5] Button
[4]
[2] Transporter "SimpleInfoPanelCargoDetail",2
[0] CargoContainer
[0 to 9] Cargo Button Container (includes Box, pos themself the first time a Transporter with content is selected)
[0] Button
[1] Life Bar
[2] Mana Bar
[3] Item on Ground "SimpleInfoPanelItemDetail",3
[4] selectable Gate/tree/etc "SimpleInfoPanelDestructableDetail",4
[5] multiple unit group selection
[0] ContainerGroupButtons
[0 to 11] ButtonContainer
[0] Highlighter Background
[1] Button
[2] Life Bar
[3] Mana Bar
[6] "SimpleInventoryBar",0
[0 to 5] "InventoryButton_0",0 to "InventoryButton_5",0
[0]
[7] "SimpleInventoryCover",0 (covers the inventory buttons when no inventory)</code></pre>
                                </div>
                            </div>
                        </div>

                        <div data-id="2" class=""><br>
                            Children of ORIGIN_FRAME_GAME_UI<br>
                            Count: 14 on default. Without
                            Multiboard, Leaderboard, TimerDialog,
                            nor having quest Dialog clicked. With
                            them it has 19.<br>
                            After anyone clicked the quest dialog 2
                            further ones are added<br>
                            Custom added Frames takes slots from [8]
                            pushing others back after Chat/Log when
                            created with prio(0)<br>









                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Code:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>[0] ORIGIN_FRAME_WORLD_FRAME
[0] 
[1] Probably Parent of World Object Hover info box &amp; HP/Mana Bars
[2] BottomUI Black Background "ConsoleUIBackdrop"
[3] Parent of ORIGIN_FRAME_PORTRAIT
[0] ORIGIN_FRAME_PORTRAIT
[1 to 7] ORIGIN_FRAME_HERO_BUTTON_INDICATOR
[4] Parent of InventoryText, Related to the visuals of SimpleFrames, hiding it makes all SimpleFrames not visible but still clickable
[0] "InventoryText"
[5] Day Time Clock &amp; Minimap are affected by this one, maybe ancestor/Parent
[0] Affects the visual daytime clock (moving it has wierd effects)
[0] Day Time Clock Mouse Listener
[1] "MinimapFrame"
[6] CinematicPanel
[0] "CinematicPanelControlFrame"
[0] "HDCinematicBackground"
[1] "CinematicBottomBorder"
[2] "CinematicScenePanel"
[1] "CinematicPortraitBackground"
[2] "CinematicPortrait"
[3] "CinematicPortraitCover"
[4] "HDCinematicPortraitCover"
[5] "CinematicSpeakerText"
[6] "CinematicDialogueText"
[3] "CinematicTopBorder"
[7] "ChatDialog"/"LogDialog"
[0] "LogBackdrop"
[1] "LogTitle"
[2] "LogOkButton"
[3] "LogAreaBackdrop"
[0] "LogArea"
ChatDialog takes LogDialogs Place in multiplayer
[0] "ChatBackdrop"
[1] "ChatTitle"
[2] "ChatPlayerRadioButton"
[3] "ChatAlliesRadioButton"
[4]	"ChatObserversRadioButton"
[5] "ChatEveryoneRadioButton"
[6] "ChatPlayerLabel"
[7] "ChatAlliesLabel"
[8] "ChatObserversLabel"
[9] "ChatEveryoneLabel"
[10] "ChatPlayerMenu"
[11] "ChatAcceptButton"
[12] "ChatHistoryDisplayBackdrop"
[0] "ChatHistoryDisplay"
[13] "ChatHistoryLabel"
[14] "ChatInfoText"
[8] "AllianceDialog"
[0] "AllianceBackdrop"
[1] "AllianceTitle"
[2] "ResourceTradingTitle"
[3] "PlayersHeader"
[4] "AllyHeader"
[5] "VisionHeader"
[6] "UnitsHeader"
[7] "GoldHeader"
[8] "LumberHeader"
[9] "AllianceAcceptButton"
[10] "AllianceCancelButton"
[11] "AlliedVictoryCheckBox"
[12] "AlliedVictoryLabel"
[13] "AllianceDialogScrollBar"
[14 to 37] "AllianceSlot"
[0] "ColorBackdrop"
[0] "ColorBorder"
[1] "PlayerNameLabel"
[2] "AllyCheckBox"
[3] "VisionCheckBox"
[4] "UnitsCheckBox"
[5] "GoldBackdrop"
[0] "GoldText"
[6] "LumberBackdrop"
[0] "LumberText"
[x] "Leaderboard"
[0] "LeaderboardBackdrop"
[1] "LeaderboardTitle"
[2] "LeaderboardListContainer"
[x] "Multiboard"
[0] "MultiboardMinimizeButton"
[1] "MultiboardTitleBackdrop"
[2] "MultiboardTitle"
[3] "MultiboardBackdrop"
[4] "MultiboardListContainer"
[9] No idea
[0]
[10] Inside Menu (F10)
[0] "EscMenuBackdrop"
[0] "EscMenuMainPanel"
[0] "MainPanel"
[0] "WouldTheRealOptionsTitleTextPleaseStandUp"
[1] "InsideMainPanel"
[0] "PauseButton"
[1] "SaveGameButton"
[2] "LoadGameButton"
[3] "OptionsButton"
[4] "HelpButton"
[5] "TipsButton"
[6] "EndGameButton"
[7] "ReturnButton"
[1] "EndGamePanel"
[0] "InsideEndGamePanel"
[0] "EndGameTitleText"
[1] "RestartButton"
[2] "QuitButton"
[3] "ExitButton"
[4] "PreviousButton"
[2] "ConfirmQuitPanel"
[0] "InsideConfirmQuitPanel"
[0] "ConfirmQuitTitleText"
[1] "ConfirmQuitMessageText"
[2] "ConfirmQuitQuitButton"
[3] "ConfirmQuitCancelButton"
[3] "HelpPanel"
[0] "InsideHelpPanel"
[0] "HelpTitleText"
[1] "HelpTextArea"
[2] "HelpOKButton"
[4] "TipsPanel"
[0] "InsideTipsPanel"
[0] "TipsTitleText"
[1] "TipsTextArea"
[2] "TipsBackButton"
[3] "TipsNextButton"
[4] "TipsOKButton"
[1]	"EscMenuOptionsPanel"
[0] "OptionsPanel"
[0] "OptionsTitleText"
[1] "GameplayButton"
[2] "VideoButton"
[3] "SoundButton"
[4] "NetworkButton"
[5] "OptionsPreviousButton"
[1] "GameplayPanel"
[0] "GameplayTitleText"
[1] "GameSpeedLabel"
[2] "GameSpeedSlider"
[3] "GameSpeedValue"
[4] "MouseScrollLabel"
[5] "MouseScrollSlider"
[6] "MouseScrollSlowLabel"
[7] "MouseScrollFastLabel"
[8] "MouseScrollDisable"
[9] "MouseScrollDisableLabel"
[10] "KeyScrollLabel"
[11] "KeyScrollSlider"
[12] "KeyScrollSlowLabel"
[13] "KeyScrollFastLabel"
[14] "TooltipsCheckBox"
[15] "TooltipsLabel"
[16] "SubgroupCheckBox"
[17] "SubgroupLabel"
[18] "FormationToggleCheckBox"
[19] "FormationToggleLabel"
[20] "HealthBarsCheckBox"
[21] "HealthBarsLabel"
[22] "CustomKeysLabel"
[23] "CustomKeysValue"
[24] "DifficultyLabel"
[25] "DifficultyValue"
[2] "VideoPanel"
[0] "VideoTitleText"
[1] "GammaLabel"
[2] "GammaSlider"
[3] "GammaDarkLabel"
[4] "GammaBrightLabel"
[5] "WindowModeLabel"
[6] "ResolutionLabel"
[7] "VSyncLabel"
[8] "ParticlesLabel"
[9] "LightsLabel"
[10] "ShadowsLabel"
[11] "OcclusionLabel"
[12] "ModelDetailLabel"
[13] "ModelDetailValue"
[14] "AnimQualityLabel"
[15] "AnimQualityValue"
[16] "TextureQualityLabel"
[17] "TextureQualityValue"
[18] "EscOptionsWindowModeMenu"
[19] "EscOptionsResolutionMenu"
[20] "VSyncCheckBox"
[21] "EscOptionsParticlesMenu"
[22] "EscOptionsLightsMenu"
[23] "EscOptionsShadowsMenu"
[24] "EscOptionsOcclusionMenu"
[3] "SoundPanel"
[0] "SoundTitleText"
[1] "SoundCheckBox"
[2] "SoundVolumeLabel"
[3] "SoundVolumeSlider"
[4] "SoundVolumeLowLabel"
[5] "SoundVolumeHighLabel"
[6] "MusicCheckBox"
[7] "MusicVolumeLabel"
[8] "MusicVolumeSlider"
[9] "MusicVolumeLowLabel"
[10] "MusicVolumeHighLabel"
[11] "AmbientCheckBox"
[12] "AmbientLabel"
[13] "MovementCheckBox"
[14] "MovementLabel"
[15] "UnitCheckBox"
[16] "UnitLabel"
[17] "SubtitlesCheckBox"
[18] "SubtitlesLabel"
[19] "ProviderLabel"
[20] "ProviderValue"
[21] "EnviroCheckBox"
[22] "EnviroLabel"
[23] "PositionalCheckBox"
[24] "PositionalLabel"
[4] "NetworkPanel"
[0] "NetworkTitleText"
[1] "NetworkLabel"
[2] "LatencyInfo1"
[3] "LatencyInfo2"
[4] "LowLatencyRadio"
[5] "HighLatencyRadio"
[6] "ExtraHighLatencyRadio"
[7] "LowLatencyLabel"
[8] "HighLatencyLabel"
[9] "ExtraHighLatencyLabel"
[5] "BottomButtonPanel"
[0] "OptionsOKButton"
[1] "OptionsCancelButton"
[2] "EscMenuSaveGamePanel"
[0] "EscMenuSaveLoadContainer"
[0] "SaveAndLoad"
[0] "FileListFrame"
[0] "DecoratedMapListBox"
[1] "LoadOnly"
[0] "LoadGameTitleText"
[1] "LoadGameLoadButton"
[2] "LoadGameCancelButton"
[2] "SaveOnly"
[0] "SaveGameTitleText"
[1] "SaveGameSaveButton"
[2] "SaveGameDeleteButton"
[3] "SaveGameCancelButton"
[4] "SaveGameFileEditBox"
[1] "EscMenuOverwriteContainer"
[0] "OverwriteOnly"
[0] "OverwriteTitleText"
[1] "OverwriteMessageText"
[2] "OverwriteOverwriteButton"
[3] "OverwriteCancelButton"
[2] "EscMenuDeleteContainer"
[0] "DeleteOnly"
[0] "DeleteTitleText"
[1] "DeleteMessageText"
[2] "DeleteDeleteButton"
[3] "DeleteCancelButton"
[11] Chat Input box
[0]
[1]
[0]
[0]
[1]
[2]
[3]
[4]
[1]
[2]
[3]
[12] Option Menu
[0] "EscOptionsWindowModePopupMenuMenu"
[1] "EscOptionsResolutionPopupMenuMenu"
[2] "EscOptionsParticlesPopupMenuMenu"
[3] "EscOptionsLightsPopupMenuMenu"
[4] "EscOptionsShadowsPopupMenuMenu"
[5] "EscOptionsOcclusionPopupMenuMenu"
[13] Mouse Cursor (Parent)</code></pre>
                                </div>
                            </div>
                        </div>

                        <div data-id="3" class="">








                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Code:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>[0] ORIGIN_FRAME_WORLD_FRAME
[1] Probably Parent of World Object Hover info box &amp; HP/Mana Bars
[2] BottomUI Black Background "ConsoleUIBackdrop"
[3] Parent of ORIGIN_FRAME_PORTRAIT
[4] InventoryText, Related to the visuals of SimpleFrames, hiding it makes all SimpleFrames not visible but still clickable
[5] Day Time Clock &amp; Minimap are affected by this one, maybe ancestor/Parent
[6] CinematicPanel
[7] Chat/LogDialog
[8] Multiboard
[9] Leaderboard
[10] TimerDialog
[11] No Idea
[12] QuestDialog
[13] AllianceDialog
[14] No Idea
[15] EscMenuBackdrop
[16] Chat Input
[17] EscOptions
[18] Mouse Cursor (Parent)</code></pre>
                                </div>
                            </div>
                        </div>

                        <div data-id="4" class="">








                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Code:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Children of ORIGIN_FRAME_TOOLTIP
Count: 1

Children of ORIGIN_FRAME_UBERTOOLTIP
Count: 1</code></pre>
                                </div>
                            </div>
                        </div>

                    </div>
                </div><a id="ItemCommandButtonHovered"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Hovering Command/ItemButton
                    </h2>
                </span>Sometimes one wants to know when the local
                player points with the mouse onto a commandbutton.
                Because there is no GetMouseon Screen X/Y, there are
                2 likely ways one could come up with. One is to
                create custom textureless BUTTON overlapping the
                wanted Buttons and the other is creating tooltips
                for the Buttons (which is only done when you use
                SIMPLEFRAMEs, hence one might first go for the
                overlapping BUTTON version).<br>
                With BlzFrameSetTooltip it is possible to know that
                the local player hovers an item or command button.
                One creates an SIMPLEFRAME with BlzCreateFrameByType
                and define it as tooltip then one checks in a timer
                running every 0.xx seconds for the visibility of the
                tooltip. This does not seem to have any sideeffect,
                does not even stop the normal tooltip. Because the
                set Tooltip works that well I disrecomment the
                overlapping BUTTONs. The BUTTONs take much more
                setup and the only gain is the event is sync over
                network without additional work, although this is
                probably a disadvantage because tooltips are
                naturally local only and other players don't care
                about the text shown in your Tooltipbox.<br>
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">-- creates tooltip frames (for command buttons) which are checked 32 times a second when a different tooltip is visible function HoversCommandButton is called with the new index, beaware this is async</span>
<span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> commandButtonTooltip <span class="prism-token prism-operator">=</span> <span class="prism-token prism-punctuation">{</span><span class="prism-token prism-punctuation">}</span>
<span class="prism-token prism-keyword">local</span> frame
<span class="prism-token prism-keyword">local</span> button

<span class="prism-token prism-comment">-- saves the last selected Button, async</span>
CurrentSelectedButtonIndex <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">nil</span>
<span class="prism-token prism-comment">--create one tooltip frame for each command button</span>
<span class="prism-token prism-keyword">for</span> int <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">11</span> <span class="prism-token prism-keyword">do</span>
button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_COMMAND_BUTTON<span class="prism-token prism-punctuation">,</span> int<span class="prism-token prism-punctuation">)</span>
frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLEFRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTooltip</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
commandButtonTooltip<span class="prism-token prism-punctuation">[</span>int<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> frame
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1.0</span><span class="prism-token prism-operator">/</span><span class="prism-token prism-number">32</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>        
<span class="prism-token prism-keyword">local</span> selectedAnything <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">false</span>
<span class="prism-token prism-comment">-- loop all tooltips and check for the visible one</span>
<span class="prism-token prism-keyword">for</span> int <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">11</span> <span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzFrameIsVisible</span><span class="prism-token prism-punctuation">(</span>commandButtonTooltip<span class="prism-token prism-punctuation">[</span>int<span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
selectedAnything <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">true</span>
<span class="prism-token prism-comment">-- the new selected is not the same as the current one?</span>
<span class="prism-token prism-keyword">if</span> CurrentSelectedButtonIndex <span class="prism-token prism-operator">~=</span> int <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">HoversCommandButton</span><span class="prism-token prism-punctuation">(</span>int<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
CurrentSelectedButtonIndex <span class="prism-token prism-operator">=</span> int        
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-comment">-- now selects nothing?</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-keyword">not</span> selectedAnything <span class="prism-token prism-keyword">and</span> CurrentSelectedButtonIndex <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">HoversCommandButton</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">nil</span><span class="prism-token prism-punctuation">)</span>
CurrentSelectedButtonIndex <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">nil</span>            
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"done"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">HoversCommandButton</span><span class="prism-token prism-punctuation">(</span>commandButtonindex<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-keyword">not</span> commandButtonindex <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Now points at nothing"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">else</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Now points at Button:"</span><span class="prism-token prism-punctuation">,</span> commandButtonindex<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>  
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <a id="AccessFramesOriginFrame"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Origin-Frames
                    </h3>
                </span>For some Frames Blizzard provided another way
                to get a frame reference to them. They are called
                OriginFrame which have an own getter native and a
                bunch of constants.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzGetOriginFrame</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">originframetype</span> frameType<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">integer</span> index <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">framehandle</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_GAME_UI</span>                    <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_COMMAND_BUTTON</span>             <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_HERO_BAR</span>                   <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_HERO_BUTTON</span>                <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_HERO_HP_BAR</span>                <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">4</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_HERO_MANA_BAR</span>              <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_HERO_BUTTON_INDICATOR</span>      <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_ITEM_BUTTON</span>                <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">7</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_MINIMAP</span>                    <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">8</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_MINIMAP_BUTTON</span>             <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">9</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_SYSTEM_BUTTON</span>              <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">10</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_TOOLTIP</span>                    <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">11</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_UBERTOOLTIP</span>                <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">12</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_CHAT_MSG</span>                   <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">13</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_UNIT_MSG</span>                   <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">14</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_TOP_MSG</span>                    <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">15</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_PORTRAIT</span>                   <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">16</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_WORLD_FRAME</span>                <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">17</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_SIMPLE_UI_PARENT</span>           <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">18</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_PORTRAIT_HP_TEXT</span>           <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">19</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_PORTRAIT_MANA_TEXT</span>         <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">20</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR</span>        <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">21</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">originframetype</span>        <span class="prism-token prism-constant">ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL</span>  <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertOriginFrameType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">22</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                ORIGIN_FRAME_SIMPLE_UI_PARENT,
                ORIGIN_FRAME_PORTRAIT_HP_TEXT,
                ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR,
                ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL were not
                included in the initial releas in 1.31.1 They were
                added in 1.32.2<br>
                When no indexes are is mentioned use index 0. But it
                seems to give you the last right index when a to
                high index is given.<br>
                <div class="bbTable">
                    <table style="max-width: 100%">
                        <tbody>
                            <tr>
                                <th>Constant</th>
                                <th>Indexes</th>
                                <th>info2</th>
                                <th>img</th>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_GAME_UI</td>
                                <td></td>
                                <td>without it nothing will be
                                    displayed.</td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_WORLD_FRAME</td>
                                <td></td>
                                <td>the visible playground, units,
                                    items, effects, fog... every
                                    object participating in the game
                                    is displayed on it.</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324631/" target="_blank">View
                                        attachment 324631</a></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_HERO_BAR</td>
                                <td></td>
                                <td>parent of all HERO_BUTTONS,
                                    HeroButtons share the same
                                    visibility.</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324622/" target="_blank">View
                                        attachment 324622</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_HERO_BUTTON </td>
                                <td>0 to 6</td>
                                <td>the clickable buttons of
                                    own/allied heroes on the left of
                                    the screen</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324623/" target="_blank">View
                                        attachment 324623</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_HERO_HP_BAR</td>
                                <td>0 to 6</td>
                                <td>connected to HeroButtons</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324621/" target="_blank">View
                                        attachment 324621</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_HERO_MANA_BAR</td>
                                <td>0 to 6</td>
                                <td>connected to HeroButtons</td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_HERO_BUTTON_INDICATOR
                                </td>
                                <td>0 to 6</td>
                                <td>The glowing when a hero has
                                    skillpoints; connected to
                                    HeroButtons. They reappear when
                                    a hero gains a new skillpoint
                                    even when all originframes are
                                    hidden.</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324619/" target="_blank">View
                                        attachment 324619</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_ITEM_BUTTON</td>
                                <td>0 to 5</td>
                                <td>Items in the inventory.
                                    Reappear/updates every
                                    selection, When its parent is
                                    visible. In 1.32.x Moving this
                                    glitches instead one has to move
                                    BlzGetFrameByName("InventoryButton_0",
                                    0)... to ("InventoryButton_5",
                                    0)</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324625/" target="_blank">View
                                        attachment 324625</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_COMMAND_BUTTON</td>
                                <td>0 to 11</td>
                                <td>the buttons to order units
                                    around, like ITEM_BUTTON,
                                    Reappear/update every selection.
                                    In 1.32.x Moving this glitches
                                    instead one has to move
                                    BlzGetFrameByName("CommandButton_0",
                                    0)... to ("CommandButton_11", 0)
                                </td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324618/" target="_blank">View
                                        attachment 324618</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_SYSTEM_BUTTON</td>
                                <td>0 to 3</td>
                                <td>Menu, allies, Log/chat, Quest.
                                    To stop the Hotkey one needs to
                                    disable the frame. When one of
                                    the menues is closed the buttons
                                    are renabled automatically.</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324633/" target="_blank">View
                                        attachment 324633</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_PORTRAIT</td>
                                <td></td>
                                <td>Face of the main selected Unit,
                                    uses a different coordination
                                    system 0,0 being the absolute
                                    bottomLeft which makes it
                                    difficult to be used together
                                    with other frames (not 4:3, like
                                    for the others)</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324628/" target="_blank">View
                                        attachment 324628</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_MINIMAP</td>
                                <td></td>
                                <td></td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_MINIMAP_BUTTON</td>
                                <td>0 to 4</td>
                                <td>0 is the Button at top to 4
                                    Button at the bottom</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324626/" target="_blank">View
                                        attachment 324626</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_TOOLTIP</td>
                                <td></td>
                                <td></td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_UBERTOOLTIP</td>
                                <td></td>
                                <td>Handles the Tooltip window</td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_CHAT_MSG</td>
                                <td></td>
                                <td></td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_UNIT_MSG</td>
                                <td></td>
                                <td>print frame for game display
                                    message / DisplayTextToPlayer
                                </td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324630/" target="_blank">View
                                        attachment 324630</a> </td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_TOP_MSG</td>
                                <td></td>
                                <td>Frame: UpKeep Change Warning
                                    Message, below the dayTime Clock
                                </td>
                                <td><a href="https://www.hiveworkshop.com/attachments/324629/" target="_blank">View
                                        attachment 324629</a></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_PORTRAIT_HP_TEXT
                                </td>
                                <td></td>
                                <td>V1.32+ Does not exist until any
                                    selection was done and a short
                                    time passed. Force a Selection
                                    and wait a short time. Does only
                                    pos itself correctly with
                                    FRAMEPOINT_CENTER. Probably a
                                    String-Frame. (BlzFrameGetText,
                                    BlzFrameSetFont are working onto
                                    it and
                                    BlzFrameSetAlpha/BlzFrameSetLevel
                                    crash the game like
                                    String-Frames tend to do)</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/352087/" target="_blank">View
                                        attachment 352087</a></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_PORTRAIT_MANA_TEXT
                                </td>
                                <td></td>
                                <td>Like
                                    ORIGIN_FRAME_PORTRAIT_HP_TEXT
                                </td>
                                <td><a href="https://www.hiveworkshop.com/attachments/352088/" target="_blank">View
                                        attachment 352088</a></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR
                                </td>
                                <td></td>
                                <td>V1.32+ The Frame has a size to
                                    fit all 8 possible Buffs</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/352090/" target="_blank">View
                                        attachment 352090</a></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL
                                </td>
                                <td></td>
                                <td>V1.32+ Attached to
                                    ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR
                                    on default. Probably a
                                    String-Frame.</td>
                                <td><a href="https://www.hiveworkshop.com/attachments/352089/" target="_blank">View
                                        attachment 352089</a></td>
                            </tr>
                            <tr>
                                <td>ORIGIN_FRAME_SIMPLE_UI_PARENT
                                </td>
                                <td></td>
                                <td>V1.32+</td>
                                <td></td>
                            </tr>
                        </tbody>
                    </table>
                </div><br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        WARNING
                    </h3>
                </span>BlzGetFrameByName/BlzFrameGetParent and
                BlzGetOriginFrame will occupy one handleId each time
                they return a frame that was not yet in the game
                (for your code). Means using that the first time in
                a GetLocalPlayer block with a name - createContext
                combo desyncs the game in multiplayer.<br>
                <br>
                <a id="AccessFramesHideDefaultUI"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Hide Default UI
                    </h3>
                </span>In case one does not need any of this builtin
                Frames one can use <code class="bbCodeInline">BlzHideOriginFrames(true)</code>
                which hides everything except for Command Buttons,
                Chat, Messages, TimerDialogs, Multiboards and
                LeaderBoards. This hidden Frames can be made visible
                again as long you find a way to access them. They
                are not destroyed.<br>
                From 1.32 one has now a Fullscreen Game with an
                black box at the bottom. Which can be hidden with
                <code
                    class="bbCodeInline">BlzFrameSetVisible(BlzGetFrameByName("ConsoleUIBackdrop",0), false)</code><br>
                There are other options, if one wants the Frame
                logical visible but not seeable: For example one
                could reduced the ySize.<br>
                <code
                    class="bbCodeInline">BlzFrameSetSize(BlzGetFrameByName("ConsoleUIBackdrop",0), 0, 0.0001)</code><br>
                <br>
                In version 1.31.1 the Playerable ground did not
                extend to the Bottom. Can be fixed with a line of
                code, but there is no Black Box Frame. It is a
                replacement in 1.32 for the extended World Frame.
                The code that makes the world Frame Fullscreen <code
                    class="bbCodeInline">BlzFrameSetAllPoints(BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0), BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0))</code><br>













                <div class="bbImageWrapper  js-lbImage" title="reforged-blzhideoriginframes-jpg.347065"
                    data-src="https://www.hiveworkshop.com/attachments/reforged-blzhideoriginframes-jpg.347065/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;reforged-blzhideoriginframes-jpg.347065&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Reforged BlzHideOriginFrames.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/reforged-blzhideoriginframes-jpg.347065/"
                        class="bbImage" data-zoom-target="1" style="" alt="reforged-blzhideoriginframes-jpg.347065"
                        title="" width="" height="" loading="lazy">
                </div>

                <br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Alternative Hide only Bottom UI
                    </h3>
                </span>There are also some other options to "hide"
                parts of the UI. One is to move the bottom Of
                "ConsoleUI" a little bit lower that has to be done
                at map Init, doing it later leads to crashes.<br>
                <code
                    class="bbCodeInline">BlzFrameSetAbsPoint(BlzGetFrameByName("ConsoleUI", 0), FRAMEPOINT_BOTTOM, 0.4, -0.18)</code><br>













                <div class="bbImageWrapper  js-lbImage" title="move-bottom-jpg.347067"
                    data-src="https://www.hiveworkshop.com/attachments/move-bottom-jpg.347067/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1">
                    <img src="https://www.hiveworkshop.com/attachments/move-bottom-jpg.347067/"
                        data-url="https://www.hiveworkshop.com/attachments/move-bottom-jpg.347067/" class="bbImage"
                        data-zoom-target="1" style="" alt="move-bottom-jpg.347067" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                When one plans to move some originframes, it is also
                advised to use this line of code <code class="bbCodeInline">BlzEnableUIAutoPosition(false)</code>.
                That will stop the reposing of some of this builtin
                frames when the user changes resolution or
                windowMode.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Alternative Hide UI by Game Interface
                    </h3>
                </span>While this frame api hiding is nice it has
                downsides. If one just wants to get rid of the
                visual background changing the used textures for the
                UI has far less sideeffects. <br>
                By setting the used Textures in game interface to
                UI\Widgets\EscMenu\Human\blank-background.blp it is
                gone.<br>
                Or in the map's file war3mapSkin.txt (basicly the
                same but without using World Editor)<br>
                <br>
                [CustomSkin]<br>
                ConsoleInventoryCoverTexture=UI\Widgets\EscMenu\Human\blank-background.blp<br>
                ConsoleTexture01=UI\Widgets\EscMenu\Human\blank-background.blp<br>
                ConsoleTexture02=UI\Widgets\EscMenu\Human\blank-background.blp<br>
                ConsoleTexture03=UI\Widgets\EscMenu\Human\blank-background.blp<br>
                ConsoleTexture04=UI\Widgets\EscMenu\Human\blank-background.blp<br>
                ConsoleTexture05=UI\Widgets\EscMenu\Human\blank-background.blp<br>
                ConsoleTexture06=UI\Widgets\EscMenu\Human\blank-background.blp<br>
                <br>
                <a href="https://www.hiveworkshop.com/attachments/hide-ui-gameinterface-1-31-1-scaled-jpg.393458/"
                    target="_blank" class="js-lbImage" data-lb-sidebar-href="" data-lb-caption-extra-html=""
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;Hide UI GameInterface 1.31.1 scaled.jpg&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;"><img src="./index_files/355705-90243b73594d1123376a8c8e873818f7.jpg"
                        class="bbImage " style="" alt="Hide UI GameInterface 1.31.1 scaled.jpg"
                        title="Hide UI GameInterface 1.31.1 scaled.jpg" width="172" height="100" loading="lazy"></a><br>
                <a href="https://www.hiveworkshop.com/attachments/hide-ui-gameinterface-1-32-scaled-jpg.393459/"
                    target="_blank" class="js-lbImage" data-lb-sidebar-href="" data-lb-caption-extra-html=""
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;Hide UI GameInterface 1.32 scaled.jpg&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;"><img src="./index_files/355706-e79202744e02b5323ef355d137bfa91e.jpg"
                        class="bbImage " style="" alt="Hide UI GameInterface 1.32 scaled.jpg"
                        title="Hide UI GameInterface 1.32 scaled.jpg" width="135" height="100" loading="lazy"></a><br>
                <br>
                <br>
                <a id="AccessFramesMoveDefaultUI"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Move Default UI
                    </h3>
                </span>As moving some Frames can be a bit wierd this
                section tells how to move the frames of the default
                UI.<br>
                When it mentions a frame is anchored with something
                than this means you can move the frame by just
                placing this point somewhere else. Or you use
                BlzFrameClearAllPoints first than place it to the
                wanted position.<br>
                <br>
                <span style="color: orange">ORIGIN_FRAME_WORLD_FRAME</span><br>
                one can set points of the World to make the playable
                part smaller.<br>
                sadly the left &amp; right limitation is not working
                correctly and one can still order units outside of
                the world<br>
                but displaying gets limited.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_WORLD_FRAME<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.55</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.7</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.15</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_HERO_BAR</span><br>
                Reposed by the game while
                BlzHideOriginFrames(false)<br>
                Anchored with TopLeft<br>
                touching it also reposes Hero Buttons<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzHideOriginFrames</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_HERO_BAR<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.55</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_HERO_BUTTON</span><br>
                To move it you need either BlzHideOriginFrames(true)
                or BlzEnableUIAutoPosition(false)<br>
                Anchored with TopLeft<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzEnableUIAutoPosition</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_HERO_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.55</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Move 2.Button</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_HERO_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_HERO_HP_BAR</span><br>
                Anchored with 2 Points I think.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_HERO_HP_BAR<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_HERO_MANA_BAR</span><br>
                Anchored to ORIGIN_FRAME_HERO_HP_BAR with TOP<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_HERO_MANA_BAR<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_HERO_BUTTON_INDICATOR</span><br>
                Anchored to ORIGIN_FRAME_HERO_BUTTON with Multiple
                Points.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_HERO_BUTTON_INDICATOR<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_ITEM_BUTTON</span><br>
                Warcraft 3 V1.32+ you need to use the name Version
                to move it<br>
                Anchored with TopLeft<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_ITEM_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Move 2.Button</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_ITEM_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Warcraft 3 V1.32+</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InventoryButton_0"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Move 2.Button</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InventoryButton_1"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_COMMAND_BUTTON</span><br>
                Warcraft 3 V1.32+ you need to use the name Version
                to move it<br>
                Anchored with TopLeft<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_COMMAND_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Move 2.Button</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_COMMAND_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Warcraft 3 V1.32+</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CommandButton_0"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Move 2.Button</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CommandButton_1"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_SYSTEM_BUTTON</span><br>
                They are equal with their Name version.<br>
                "UpperButtonBarQuestsButton" anchored with
                TopLeft.<br>
                "UpperButtonBarMenuButton" anchored with Left.<br>
                "UpperButtonBarAlliesButton" anchored with Left.<br>
                "UpperButtonBarChatButton" anchored with Left.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"UpperButtonBarQuestsButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"UpperButtonBarMenuButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.35</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"UpperButtonBarAlliesButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.38</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"UpperButtonBarChatButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_PORTRAIT</span><br>
                Size changes with resolution <br>
                Anchored with Bottomleft<br>
                To move it you need either BlzHideOriginFrames(true)
                or BlzEnableUIAutoPosition(false)<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzEnableUIAutoPosition</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_PORTRAIT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_MINIMAP</span><br>
                Place either Topright &amp; Bottomleft or TopLeft
                &amp; Bottomleft to move it.<br>
                In V1.31.1 the mouseclicking onto the Minimap then
                becomes broken as the game interprets the click
                relative to the default Minimap position.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_MINIMAP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.6</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-comment">// Move out of 4:3 V1.32+</span>
<span class="prism-token prism-keyword">function</span> MoveMinimapOutOf43Screen <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> parent <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUIBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MiniMapFrame"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetParent</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_BOTTOMLEFT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.8</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_TOPRIGHT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.95</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span>

<span class="prism-token prism-comment">// Move out of 4:3 V1.31.1</span>
<span class="prism-token prism-keyword">function</span> MoveMinimapOutOf43Screen <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">leaderboard</span> lb <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function-bj">CreateLeaderboardBJ</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-variable">bj_FORCE_ALL_PLAYERS</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"title"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> parent <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Leaderboard"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> frame
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"LeaderboardBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"LeaderboardTitle"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_MINIMAP</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetParent</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_BOTTOMLEFT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.8</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_TOPRIGHT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.95</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_MINIMAP_BUTTON</span><br>
                In V1.32+; also can use "MinimapSignalButton"
                "MiniMapTerrainButton" "MiniMapAllyButton"
                "MiniMapCreepButton" "FormationButton" instead.<br>
                Anchored with Topleft.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_MINIMAP_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Move 2.Button</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_MINIMAP_BUTTON<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.47</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_UBERTOOLTIP</span><br>
                TooltipBox for most default UI.<br>
                Anchored with BottomRight.<br>
                I would advise to move it with an Bottom Point as it
                expands upwards.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_UBERTOOLTIP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- if one does not want to place FRAMEPOINT_BOTTOMRIGHT</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_UBERTOOLTIP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_CHAT_MSG</span><br>
                Place either Topright &amp; Bottomleft or TopLeft
                &amp; Bottomleft to move it.<br>
                Can crash the game with bad size/coords.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_CHAT_MSG<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.6</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_UNIT_MSG</span><br>
                Place either Topright &amp; Bottomleft or TopLeft
                &amp; Bottomleft to move it.<br>
                Can crash the game with bad size/coords.<br>
                The Y-Size should not be bigger than 0.25<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_UNIT_MSG<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_TOP_MSG</span><br>
                Can crash the game with bad size/coords. Hence I
                suggest to use BlzFrameClearAllPoints and pos only
                one point.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_TOP_MSG<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <br>
                <span style="color: orange">ORIGIN_FRAME_PORTRAIT_HP_TEXT</span><br>
                <span style="color: orange">ORIGIN_FRAME_PORTRAIT_MANA_TEXT</span><br>
                Warcraft 3 V1.32+ only<br>
                Don't exist until any selection was done<br>
                Moving them is a hussle, it only works fine when
                moving with Center.<br>
                Might be easier to just copy the Displayed Text with
                BlzFrameGetText(BlzGetOriginFrame(ORIGIN_FRAME_PORTRAIT_MANA_TEXT,
                0)) as they update even during
                BlzHideOriginFrames(true).<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_PORTRAIT_HP_TEXT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_PORTRAIT_MANA_TEXT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.28</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR</span><br>
                Warcraft 3 V1.32+ only<br>
                Anchored to "SimpleInfoPanelUnitDetail"'s
                BottomRight with BottomRight.<br>
                Means to move it in V1.31.1 move
                "SimpleInfoPanelUnitDetail"'s BottomRight.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL</span><br>
                Warcraft 3 V1.32+ only<br>
                Anchored to ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR with
                Right<br>
                It can be hidden by setting the Frame's text to ""
                either by a native or in game interface
                COLON_STATUS.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">APM/PING/FPS</span>:<br>
                No access<br>
                Anchored to Topright of "ResourceBarFrame"'s
                Topright Offset ca -0.44/-0.03<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ResourceBarFrame"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span> <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">0.44</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span> <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">"ResourceBarFrame"</span><br>
                The IconFrames don't have names hence can't be
                accessed by code.<br>
                This IconFrames are anchored with TopLeft to
                "ResourceBarFrame"'s TopLeft.<br>
                The Texts can by Name and createContext 0. They are
                anchored with TopRight to "ResourceBarFrame"'s
                TopRight.<br>
                A Resource's TooltipListener follows the Text-Frame
                and can be hidden using BlzFrameSetVisible onto the
                childs of "ResourceBarFrame", Checkout <a href="javascript:;" data-hash="AccessFramesByChild">Access
                    Frames by
                    Child</a>.<br>
                "ResourceBarGoldText"<br>
                "ResourceBarLumberText"<br>
                "ResourceBarSupplyText"<br>
                "ResourceBarUpkeepText"<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ResourceBarGoldText"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ResourceBarLumberText"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ResourceBarSupplyText"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ResourceBarUpkeepText"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Single Unit
                    Selection</span>:<br>
                "SimpleInfoPanelUnitDetail", 0<br>
                "SimpleNameValue",0<br>
                "SimpleClassValue",0 <br>
                "SimpleHeroLevelBar",0<br>
                "SimpleProgressIndicator",0<br>
                "SimpleBuildTimeIndicator",0<br>
                "SimpleClassValue", "SimpleHeroLevelBar" &amp;
                "SimpleProgressIndicator" are Anchored to
                "SimpleNameValue" with Top.<br>
                "SimpleClassValue" y-Offset -0.0055 while the others
                have -0.0015<br>
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleNameValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleClassValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.004</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleHeroLevelBar"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleProgressIndicator"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                Moving any "SimpleInfoPanelIcon directly is not
                recommented as the game reposes them based on
                current need.<br>
                "SimpleInfoPanelIconDamage",0<br>
                "SimpleInfoPanelIconDamage",1<br>
                "SimpleInfoPanelIconArmor",2<br>
                "SimpleInfoPanelIconRank",3<br>
                "SimpleInfoPanelIconFood",4<br>
                "SimpleInfoPanelIconGold",5<br>
                <br>
                Move single UnitInfoPanels, is best done by moving
                the "InfoPanelIconBackdrop"<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.35</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">4</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">5</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Trainer
                    Selection</span>:<br>
                Size: 0.188125 0.1140625<br>
                "SimpleInfoPanelBuildingDetail", 1<br>
                <div style="margin-left: 20px">This Frame is shown
                    when one unit is selected and it trains
                    something.<br>
                    "SimpleBuildingNameValue", 1<br>
                    <div style="margin-left: 20px">Anchor TOP​</div>
                    "SimpleBuildingDescriptionValue", 1<br>
                    <div style="margin-left: 20px">TOP,
                        "SimpleBuildingNameValue", BOTTOM​</div>
                    "SimpleBuildTimeIndicator", 1<br>
                    <div style="margin-left: 20px">TOPLEFT,
                        "SimpleInfoPanelBuildingDetail", TOPLEFT,
                        0.061250, -0.038125​</div>
                    "SimpleBuildingActionLabel", 1<br>
                    <div style="margin-left: 20px">CENTER,
                        "SimpleInfoPanelBuildingDetail", TOPLEFT,
                        0.11375, -0.029875​</div>
                    "SimpleBuildQueueBackdropFrame", 1<br>
                    "SimpleBuildQueueBackdrop", 1<br>
                    <div style="margin-left: 20px">SetPoint
                        BOTTOMLEFT, "SimpleInfoPanelBuildingDetail",
                        BOTTOMLEFT<br>
                        BOTTOMRIGHT,
                        "SimpleInfoPanelBuildingDetail",
                        BOTTOMRIGHT​</div>
                </div><br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">-- moving the whole thing</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelBuildingDetail"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.188125</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1140625</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- scaling it down</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelBuildingDetail"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.8</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- one could move around the individual frames</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleBuildingNameValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleBuildingDescriptionValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleBuildTimeIndicator"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleBuildingActionLabel"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleBuildQueueBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Transporter
                    selection</span>:<br>
                "SimpleInfoPanelCargoDetail", 2<br>
                "SimpleHoldNameValue", 2<br>
                <div style="margin-left: 20px">Anchor TOP​</div>
                "SimpleHoldDescriptionValue", 2<br>
                <div style="margin-left: 20px">TOP,
                    "SimpleHoldNameValue", BOTTOM​</div>











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleHoldNameValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleHoldDescriptionValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Item On Ground
                    selection</span>:<br>
                "SimpleInfoPanelItemDetail", 3<br>
                "SimpleItemNameValue", 3<br>
                Anchor TOP<br>
                "SimpleItemDescriptionValue", 3<br>
                TOP, "SimpleItemNameValue", BOTTOM<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleItemNameValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleItemDescriptionValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Gate/Tree/Rock
                    selection</span>:<br>
                "SimpleInfoPanelDestructableDetail",4<br>
                "SimpleDestructableNameValue",4 Anchored Top<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleDestructableNameValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">4</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Group
                    Selection</span>:<br>
                This Frame can only be accessed using the Frame
                Child api (V1.32.6+). <br>
                It is anchored to Parent of
                "SimpleInfoPanelUnitDetail", 0.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">--Move the whole thing</span>
<span class="prism-token prism-keyword">local</span> unitFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelUnitDetail"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> bottomCenterUI <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetParent</span><span class="prism-token prism-punctuation">(</span>unitFrame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> groupFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>bottomCenterUI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>groupFrame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>groupFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>groupFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.188125</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1140625</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--Scale it up</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>groupFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>Move single Buttons of the groupSelection:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">--Move 1.Button</span>
<span class="prism-token prism-keyword">local</span> unitFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelUnitDetail"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> bottomCenterUI <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetParent</span><span class="prism-token prism-punctuation">(</span>unitFrame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> groupFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>bottomCenterUI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonContainerFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>groupFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>buttonContainerFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--Move 2.Button</span>
buttonFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>buttonContainerFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.34</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">HeroInfo
                    Frames</span>:<br>
                "SimpleInfoPanelIconHero", 6 is the container.<br>
                Anchored with TopLeft<br>
                "InfoPanelIconHeroIcon", 6 is the Big Icon showing
                the primary Attribute.<br>
                Anchored Left<br>
                "SimpleInfoPanelIconHeroText", 6<br>
                Anchored with many points to
                "SimpleInfoPanelIconHeroText" &amp;
                "SimpleInfoPanelIconHero"<br>
                <br>
                Following are anchored with TopLeft and are childs
                of "SimpleInfoPanelIconHeroText".<br>
                "InfoPanelIconHeroStrengthLabel"<br>
                "InfoPanelIconHeroStrengthValue"<br>
                "InfoPanelIconHeroAgilityLabel"<br>
                "InfoPanelIconHeroAgilityValue"<br>
                "InfoPanelIconHeroIntellectLabel"<br>
                "InfoPanelIconHeroIntellectValue"<br>
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">--Move the whole thing</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelIconHero"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--Move the text display</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconHeroStrengthLabel"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--Move the Prim Stat Icon &amp; it's Tooltip Listener</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconHeroIcon"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Ally
                    Selection</span>:<br>
                "SimpleInfoPanelIconAlly", 7<br>
                Anchored with TopLeft, repeated by the game -&gt; do
                not move ("SimpleInfoPanelIconAlly", 7)<br>
                "InfoPanelIconAllyTitle"<br>
                Anchored with TopLeft<br>
                "InfoPanelIconAllyGoldIcon"<br>
                Anchored with TopLeft<br>
                "InfoPanelIconAllyGoldValue"<br>
                "InfoPanelIconAllyWoodIcon"<br>
                "InfoPanelIconAllyWoodValue"<br>
                "InfoPanelIconAllyFoodIcon"<br>
                "InfoPanelIconAllyFoodValue"<br>
                "InfoPanelIconAllyUpkeep"<br>
                The Textures are anchored to the previous Textures
                and the Strings next to the Textures.<br>
                But "InfoPanelIconAllyTitle" &amp;
                "InfoPanelIconAllyGoldIcon" are anchored to
                "SimpleInfoPanelIconAlly".<br>
                The tooltip Listener will follow their Icon.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">--Move the whole thing</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconAllyTitle"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">7</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconAllyGoldIcon"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">7</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.009</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">Multiboard</span>:<br>
                Using UI-Frame api you can do some stuff with
                Multiboards. You can show more than one at a time,
                move them around or change their textures.<br>
                Multiboard position is affected by current
                resolution. With x-pos 0.8 it moves to right screen
                border (V1.31.1).<br>
                "Multiboard"<br>
                "MultiboardMinimizeButton"<br>
                "MultiboardTitleBackdrop"<br>
                "MultiboardTitle"<br>
                "MultiboardBackdrop"<br>
                "MultiboardListContainer"<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Multiboard"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><span style="color: orange">Leaderboard</span>:<br>
                <code
                    class="bbCodeInline">call BlzFrameSetAbsPoint( BlzGetFrameByName("Leaderboard", 0), FRAMEPOINT_TOPRIGHT, 0.8, 0.3)</code>
                moves it to the right screen border.<br>
                If a map has a Leaderboard &amp; a Multiboard the
                Leaderboard gets reposed below the Multiboard when
                "MultiboardMinimizeButton" is clicked<br>
                "Leaderboard", 0<br>
                Anchored Topright<br>
                "LeaderboardBackdrop", 0<br>
                "LeaderboardTitle", 0<br>
                "LeaderboardListContainer", 0<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Leaderboard"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">TimerDialog</span>:<br>
                Like Multiboard &amp; Leaderboard, abs pos
                FRAMEPOINT_TOPRIGHT with 0.8 is the right screen
                border<br>
                TimerDialog is bad to use with UI-Frame API, just
                create your own using UI-Frame API.<br>
                <span style="color: orange">Dialog</span>:<br>
                Dialog is bad to use with UI-Frame API.<br>
                <br>
                <a href="javascript:;" data-hash="AccessFramesUnitInfo">Unit Info
                    Panel</a><br>
                <br>
                <a id="VariousFrameMods"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Simple UI changes
                    </h2>
                </span>This section is a collection of UI changes to
                do various small edits to the default UI.<br>
                <br>
                Hide the Hero-Exps tooltip for the whole game:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetTooltip</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleHeroLevelBar"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLEFRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_GAME_UI</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                Hide the Hero-Attributes:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelIconHeroText"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconHeroIcon"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.00001</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.00001</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                Disable the UpKeep-Tooltip (Warcraft 3
                V1.32.6+):<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ResourceBarFrame"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                Make the Cinematic Messages Center Aligned:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetTextAlignment</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CinematicDialogueText"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">TEXT_JUSTIFY_MIDDLE</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">TEXT_JUSTIFY_CENTER</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                Expand Quest-Description's space by taking
                Quest-Defeat-Condition reserved space.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">function</span> QuestCheck <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameClick</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"UpperButtonBarQuestsButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameClick</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestAcceptButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestItemListContainer"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestItemListScrollBar"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.001</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.001</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span></code></pre>
                    </div>
                </div><br>
                Hide BuffBar, as the BuffBar is reshown with
                selection a simple BlzFrameSetVisible false won't do
                it. Instead one creates a hidden parent and changes
                parentship:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">function</span> Test <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> newParent <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLEFRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUI"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>newParent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetParent</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> newParent<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span></code></pre>
                    </div>
                </div><br>
                <a id="Frame_ParentShip"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Frame Child &amp; Frame
                    </h2>
                </span>Frame - Parent is a powerful and useful
                concept of warcraft 3's UI-Frame System.<br>
                Every frame has a parent frame. Any frame can have
                any amount of child frames. In the same time any
                child frame also can have any amount of child
                frames.<br>
                <br>
                natives provided to get and set the current parent
                of a frame during the game.<br>
                <code
                    class="bbCodeInline">native BlzFrameSetParent takes framehandle frame, framehandle parent returns nothing</code><code
                    class="bbCodeInline">native BlzFrameGetParent takes framehandle frame returns framehandle</code><br>
                <br>
                A parent is also set when creating a new frame, as
                all create frame natives require an
                owner/parent.<br>
                <br>
                In many examples custom Frames are created as child
                of GAME_UI which is done to simple down the example.
                But it is ineffective to create all custom Frames
                for GAME_UI, if one has Frames that are logical
                connected it would make more sense to collecte them
                as childs of one Frame.<br>
                For Frames "FRAME" could be used.<br>
                For SimpleFrames "SIMPLEFRAME".<br>
                Both are created with BlzCreateFrameByType<br>
                <br>
                FrameA child of Game_UI<br>
                FrameB child of FrameA<br>
                FrameC child of FrameA<br>
                FrameD child of FrameA<br>
                <br>
                FrameA is the parent a logical container of FrameB,
                FrameC and FrameD.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Why I should bother this concept?
                    </h3>
                </span>The FrameParent concept simples down a lot of
                stuff you might want to accomplish. Want to create a
                new option in menu, create your Frame for
                ("EscMenuMainPanel", 0). Now the frame requires the
                visibility of ("EscMenuMainPanel", 0) and you can
                focus on the behaviour of the frame itself instead
                of handling the visiblity which can be quite
                complicated when injecting into the normal warcraft
                3 UI. In my opinion the most powerful effect of
                frame-parentship.<br>
                <br>
                Want to add a new UnitInfo (if you find a place for
                it on the screen) create it for
                ("SimpleInfoPanelUnitDetail", 0) then it only will
                be visible when the local player has only one unit
                selected. Through this is a bit nah, cause you need
                to know the selected unit to update the displayed
                data (in such unit cases).<br>
                <br>
                If you wouldn't use this parent concept for
                visibility you would have to find out with
                triggers/code that the local player has only one
                unit selected, or is inside the menu for the example
                and also not in cinematic mode.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        What are the Effects of Parent-Child
                    </h3>
                </span>A child frame can only be visible when it's
                parent frame is visible. BlzFrameIsVisible also
                checks for the visibility of the parent frame. New
                created frames copy scale and alpha from their
                parent on default. This values can differ for the
                children when they are set (for the child frame)
                after the child frame was added to /created for the
                parent frame.<br>
                <br>
                BlzFrameSetScale<br>
                BlzFrameSetAlpha<br>
                <div style="margin-left: 20px">When changing Parents
                    the alpha value of the new Parent is copied.​
                </div>BlzFrameSetLevel<br>
                <div style="margin-left: 20px">Frames created for a
                    parent frame also have the same Level.​</div>
                <br>
                A child tends to be visible above and is prefered by
                mouse events over its parent.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        2 Types of children
                    </h3>
                </span>I split childFrames in 2 Types <b>loose</b>
                children and <b>functional</b> children.<br>
                <br>
                <b>Functional</b> child frames can only be defined
                and created inside fdf such children have a strong
                connection to their parent and perform some
                functionality for the parentFrame hence the name. An
                example of such functional child frame is <code
                    class="bbCodeInline">ButtonText "ScriptDialogButtonText",</code><br>
                This childFrame styles the text for it's parent
                frame "ScriptDialogButton". Functional childFrames
                copy even more from the ParentFrame, their position
                is automatically handled and they copy the enable
                state.<br>
                <br>
                All ChildFrames not being functional child-Frames
                are <b>Loose</b> child-Frames. They can be added in
                fdf and code. They do not perform any direct
                functionality for their parent. This code creates a
                new loose child frame for parentFrame. <code
                    class="bbCodeInline">BlzCreateFrame("frameName", parentFrame, 0, 0)</code>
                The position of a loose childFrame is on default
                independent from it's parent, it does not even
                require the parent frame to be placed on the
                screen.<br>
                That behaviour can be used to create Frames with a
                higher FrameLevel then their type supports: Create A
                BUTTON set its FrameLevel and create the wanted
                Frames using him as parent for example
                TEXT-Frames.<br>
                <br>
                Want to show/hide a whole bunch of Frames collect
                them under one ParentFrame and change the
                ParentFrame's visibility. Now it only takes one line
                to toggle the visibility.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Parent Limitations?
                    </h3>
                </span>SimpleFrames can not be children nor parent
                of Frames. Frames can not be Children/Parent of
                SimpleFrames. Some might now say: "but I created a
                BUTTON for SIMPLEFRAME in fdf or, I created
                SIMPLEFRAME for a BUTTON during the game."<br>
                Yes, you did but on a more accurate inspection, by
                comparing HandleIds of the parent of the new frame
                and the wanted/should be parent one might see they
                do not match, in both cases you see the handleId of
                another frame, I call that a substitute parent.<br>
                When that happens one might at first wonder why
                visibility and other parent behaviours do not apply.
                But the reason: the wanted parent is not the real
                parent and so it does not copy the
                visibility/alpha... .<br>
                <br>
                In 1.31 BlzFrameSetParent can bug sometimes (it
                speeds up the animation of "SPRITE" and can empower
                the glowing of "HIGHLIGHT" when changing the parent
                for this frames directly).<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Example
                    </h3>
                </span>This is a Lua code creating a clickable
                Button that is only visible while the player is
                inside the Menu (F10), the code executes itself when
                insert into a map in Lua mode.<br>
                When the button is clicked the message "action in
                Menu" is printed onto the screen.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EscMenuMainPanel"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScoreScreenTabButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> iconFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> buttonFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>iconFrame<span class="prism-token prism-punctuation">,</span> buttonFrame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>buttonFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>iconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\WorldEditUI\\Doodad-Cinematic.blp"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"action in Menu"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> buttonFrame<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>Although this is a bit vague cause currently
                it also is visible while choosing to end game and
                not visible while being inside options. If you plan
                on doing something like that you have to find out
                more about that frames in detail and which is the
                one suited for your wanted goal. This menu frames
                are in "ui/framedef/ui" when looking with
                cascview.<br>













                <div class="bbImageWrapper  js-lbImage" title="button-in-menu-jpg.337841"
                    data-src="https://www.hiveworkshop.com/attachments/button-in-menu-jpg.337841/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;button-in-menu-jpg.337841&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Button in Menu.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/button-in-menu-jpg.337841/" class="bbImage"
                        data-zoom-target="1" style="" alt="button-in-menu-jpg.337841" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                This was written in mind for warcraft 3 V1.31.1.<br>
                <br>
                <br>
                <a id="Point_FrameLevel"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Frame Order by Level
                    </h2>
                </span>When multiple Frames are at the same space
                there is an rule that tells who will take the mouse
                Events and is displayed on top. FrameLevel set with
                BlzFrameSetLevel manages that, it only matters when
                Frames colide/overlap on the screen. Only visible
                Frames matter for the FrameLevel order.<br>
                FrameLevel works different for SimpleFrames and
                Frames.<br>
                <br>
                <h3 style="margin: 0">
                    For Frames:
                </h3>FrameLevel define the order in which
                child-Frames are above their Parent. Frames only
                compete with their siblings. They are ordered
                descending. The childFrame with the highest Level is
                onTop. the one with the lowest Level is directly
                above the parent but below it's brothers and
                sisters. A Frame's children are below a sibling with
                a higher level.<br>
                FrameLevel only matter for the current Children when
                you give a FrameChild an high Level and create
                further silberlings it will not be above them.<br>













                <div class="bbImageWrapper  js-lbImage" title="frame-order-sketch-jpg.352639"
                    data-src="https://www.hiveworkshop.com/attachments/frame-order-sketch-jpg.352639/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;frame-order-sketch-jpg.352639&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Frame Order Sketch.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/frame-order-sketch-jpg.352639/"
                        class="bbImage" data-zoom-target="1" style="" alt="frame-order-sketch-jpg.352639" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                <br>
                <h3 style="margin: 0">
                    For SimpleFrames:
                </h3>The one with the highest Level is on Top,
                parentship does not matter. When a SimpleFrame is
                created it copies the current Level of the Parent so
                it is above it. But one can change the Levels to
                have the parent on top, this also means that later
                changes to Level of the Parent are not taken over by
                child-SimpleFrames except for Texture/Strings, they
                do.<br>













                <div class="bbImageWrapper  js-lbImage" title="simpleframe-level-order-jpg.360690"
                    data-src="https://www.hiveworkshop.com/attachments/simpleframe-level-order-jpg.360690/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;simpleframe-level-order-jpg.360690&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/SimpleFrame Level Order.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/simpleframe-level-order-jpg.360690/"
                        class="bbImage" data-zoom-target="1" style="" alt="simpleframe-level-order-jpg.360690" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                One could say both use the same rule except that
                Frames start new Layers in which the Frame's
                children are placed while SimpleFrames have only one
                Layer, started by the SimpleFrame Ancient. But the
                special SimpleFrame children Texture/String are in
                Layers started by their parent SimpleFrame.
                Texture/String can't have children hence the layer
                mechanic for that group is quite simple.<br>
                <br>
                <br>
                An example:<br>
                <div style="margin-left: 20px">ButtonA child of
                    GAMEUI Level 2<br>
                    ButtonB child of GAMEUI Level 3<br>
                    ButtonC child of GAMEUI Level 1<br>
                    ButtonAA child of ButtonA Level 1<br>
                    ButtonAB child of ButtonA Level 5<br>
                    ButtonBA child of ButtonB Level 3<br>
                    ButtonBB child of ButtonB Level 1<br>
                    ButtonBBA child of ButtonBB Level 6<br>
                    ButtonCA child of ButtonC Level 8<br>
                    ButtonCB child of ButtonC Level 7​</div><br>
                on top of GAMEUI is ButtonB, he has the highest
                Level of GAMEUI.<br>
                ButtonBA has a higher Level than ButtonBB hence he
                is on top of ButtonB.<br>
                ButtonBBA is a child of ButtonBB, but it's parent
                ButtonBB is lower then ButtonBA hence he is also
                lower than ButtonBA.<br>
                ButtonCA and ButtonCB have high levels but their
                parent ButtonC is the lowest in GAMEUI so they are
                also the lowest.<br>
                The onTop Total is ButtonBA.<br>
                <br>
                The Frame ontop also takes all the mouse
                control.<br>













                <div class="bbImageWrapper  js-lbImage" title="buttonorder-jpg.349197"
                    data-src="https://www.hiveworkshop.com/attachments/buttonorder-jpg.349197/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;buttonorder-jpg.349197&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/ButtonOrder.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/buttonorder-jpg.349197/" class="bbImage"
                        data-zoom-target="1" style="" alt="buttonorder-jpg.349197" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>


                <div class="bbCodeSpoiler">
                    <button type="button" class="bbCodeSpoiler-button button--longText button" data-xf-click="toggle"
                        data-xf-init="tooltip" data-original-title="Click to reveal or hide spoiler"
                        id="js-XFUniqueId53"><span class="button-text">

                            <span><span class="bbCodeSpoiler-button-title">The
                                    Lua code used to generated the
                                    image</span></span>
                        </span></button>
                    <div class="bbCodeSpoiler-content">
                        <div class="bbCodeBlock bbCodeBlock--spoiler">
                            <div class="bbCodeBlock-content"><br>












                                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                    <div class="bbCodeBlock-title">
                                        Lua:
                                    </div>
                                    <div class="bbCodeBlock-content" dir="ltr">
                                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> parent <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--local parent = BlzGetFrameByName("EscMenuMainPanel", 0)</span>
<span class="prism-token prism-keyword">local</span> buttonA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"A"</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"B"</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonC <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"C"</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonAA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"AA"</span><span class="prism-token prism-punctuation">,</span> buttonA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonAB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"AB"</span><span class="prism-token prism-punctuation">,</span> buttonA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonBA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"BA"</span><span class="prism-token prism-punctuation">,</span> buttonB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonBB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"BB"</span><span class="prism-token prism-punctuation">,</span> buttonB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonBBA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"BBA"</span><span class="prism-token prism-punctuation">,</span> buttonBB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonCA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CA"</span><span class="prism-token prism-punctuation">,</span> buttonC<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonCB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CB"</span><span class="prism-token prism-punctuation">,</span> buttonC<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>


<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonC<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonAA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonAB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">5</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonBA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonBB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonBBA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonCB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">8</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetLevel</span><span class="prism-token prism-punctuation">(</span>buttonCA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">7</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"A"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"B"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonC<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"C"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonAA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"AA"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonAB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"AB"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonBA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"BA"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonBB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"BB"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonCA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CA"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonCB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CB"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonBBA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"BBA"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonC<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.24</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.34</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonCA<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.26</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.36</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonCB<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.28</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.38</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonA<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonAA<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.32</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.42</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonAB<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.34</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.44</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonB<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.36</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.46</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonBB<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.38</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.48</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonBBA<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>buttonBA<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.42</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.52</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div><br>
                <br>
                SIMPLEBUTTON control-click-Event is prioritized
                against non-SimpleFrames with a higher Level.<br>
                <br>


                <div class="bbCodeSpoiler">
                    <button type="button" class="bbCodeSpoiler-button button--longText button" data-xf-click="toggle"
                        data-xf-init="tooltip" data-original-title="Click to reveal or hide spoiler"
                        id="js-XFUniqueId54"><span class="button-text">

                            <span><span class="bbCodeSpoiler-button-title">Warcraft
                                    3 Versions 1.31.1
                                    only</span></span>
                        </span></button>
                    <div class="bbCodeSpoiler-content">
                        <div class="bbCodeBlock bbCodeBlock--spoiler">
                            <div class="bbCodeBlock-content"><br>
                                In Warcraft 3 Versions 1.31.1 using
                                BlzFrameSetLevel onto this
                                FrameTypes crashes the game, there
                                is no crash in V1.32.2.<br>
                                BACKDROP<br>
                                FRAME<br>
                                HIGHLIGHT<br>
                                MODEL<br>
                                SPRITE<br>
                                TEXT<br>
                                TIMERTEXT</div>
                        </div>
                    </div>
                </div><br>
                A SIMPLEFRAME with a FrameLevel of 2 or higher is
                displayed over unit lifebars and covers them, when
                created as child of GAME_UI.<br>
                <br>
                <br>
                <a id="CreateFrame"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Create-Frames
                    </h2>
                </span>Warcraft 3 provides 3 natives to create
                Frames into the running match.<br>
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzCreateFrame</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">string</span> name<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framehandle</span> owner<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">integer</span> priority<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">integer</span> createContext <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">framehandle</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzCreateSimpleFrame</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">string</span> name<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framehandle</span> owner<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">integer</span> createContext <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">framehandle</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzCreateFrameByType</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">string</span> typeName<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">string</span> name<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">framehandle</span> owner<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">string</span> inherits<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">integer</span> createContext <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">framehandle</span></code></pre>
                    </div>
                </div><br>
                <code class="bbCodeInline">BlzCreateFrame</code>
                &amp; <code class="bbCodeInline">BlzCreateSimpleFrame</code>
                are used to create MainFrames (the ones outside of
                Blocks) defined in a FDF which has to be loaded into
                the game with TOC.<br>
                <code class="bbCodeInline">BlzCreateFrame</code>
                creates MainFrames which are not SimpleFrames. Most
                of this frames allow attaching various Frameevents
                and they can do alot of things.<br>
                <code class="bbCodeInline">BlzCreateSimpleFrame</code>
                creates MainFrames of the Simple group. SimpleFrames
                have "SIMPLE" in their type name. Most Simpleframes
                can not have frameevents registered onto them<br>
                <br>
                Lets checkout the arguments<br>
                <ol>
                    <li data-xf-list-type="ol">string name<ul>
                            <li data-xf-list-type="ul">this is the
                                name of the frame you want to
                                create, you have to take it from a
                                loaded fdf. Its the 2.word in ""
                                after Frame.












                                <div class="bbImageWrapper  js-lbImage" title="framename-jpg.360980"
                                    data-src="https://www.hiveworkshop.com/attachments/framename-jpg.360980/"
                                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                                    data-fancybox="lb-undefined"
                                    data-caption="&lt;h4&gt;framename-jpg.360980&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                                    style="cursor: pointer;">
                                    <img src="./index_files/FrameName.jpg"
                                        data-url="https://www.hiveworkshop.com/attachments/framename-jpg.360980/"
                                        class="bbImage" data-zoom-target="1" style="" alt="framename-jpg.360980"
                                        title="" width="" height="" loading="lazy">
                                </div>

                            </li>
                        </ul>
                    </li>
                    <li data-xf-list-type="ol">framehandle owner<ul>
                            <li data-xf-list-type="ul">A reference
                                to some already existing Frame, it
                                becomes the parent of the new frame.
                                A SimpleFrame wants a SimpleFrame
                                and a Frame wants a Frame, Mixing
                                them tends to fail or break some
                                features of Child-Parent.</li>
                        </ul>
                    </li>
                    <li data-xf-list-type="ol">integer priority<ul>
                            <li data-xf-list-type="ul">Should be a
                                natural number (greater equal to 0).
                            </li>
                        </ul>
                    </li>
                    <li data-xf-list-type="ol">integer createContext
                        <ul>
                            <li data-xf-list-type="ul">The index in
                                the frame storage the new Frame and
                                it's Child-Frames will take. The
                                frame storage is accessed with
                                BlzGetFrameByName("name",
                                createContext)</li>
                        </ul>
                    </li>
                </ol><br>
                <code class="bbCodeInline">BlzCreateFrameByType</code>
                defines a new Frame and creates it in the same call.
                Hence one has to tell quite a bunch of things about
                the new Frame. If you want to create your Frames
                without fdf/TOC this native is the way to go.<br>
                Checkout the changed arguments for
                BlzCreateFrameByType<br>
                <ol>
                    <li data-xf-list-type="ol">string typeName<ul>
                            <li data-xf-list-type="ul">this is the
                                basic behaviour of the new frame. It
                                is the 1.word in "" after Frame. <a href="javascript:;"
                                    data-hash="Frames_Types">FrameTypes</a>
                            </li>
                        </ul>
                    </li>
                    <li data-xf-list-type="ol">string name<ul>
                            <li data-xf-list-type="ul">This is the
                                name the new Frame is given.</li>
                        </ul>
                    </li>
                    <li data-xf-list-type="ol">string inherits<ul>
                            <li data-xf-list-type="ul">The name of
                                the frame you to copy, you have to
                                take it from a loaded fdf. Its the
                                2.word in "" after Frame.
                                Technically in fdf it is INHERITS
                                WITHCHILDREN.</li>
                        </ul>
                    </li>
                </ol><br>
                If one want the click sound feature of GLUE Frames
                one needs to create them with BlzCreateFrame.<br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        How to practicaly create a Frame
                    </h3>
                </span>The previous was explaining the create
                natives, but it did not show yet how to bring a new
                Frame into the game. To add a new Frame into the
                game one has to perform this steps, they can alter
                when using fdf.<br>
                <ol>
                    <li data-xf-list-type="ol">Select and Get The
                        Parent Frame.</li>
                    <li data-xf-list-type="ol">Create the new Frame
                        as child of the selected Parent Frame</li>
                    <li data-xf-list-type="ol">customize Frame's
                        position/size/texture/text... .</li>
                </ol><br>
                First one has to select a parentFrame.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> parent <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUIBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>After that one creates the new Frame as child
                of that parent.
                "QuestButtonDisabledBackdropTemplate" is a name of a
                Frame defined in fdf.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonDisabledBackdropTemplate"</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>Now that the Frame was created one has to set
                position/size/texture/text, if they were not already
                set in fdf. In which order you set position
                size/texture/text does not matter.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_CENTER</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <br>
                <a id="FrameExampleImageNoFdf"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        BACKDROP Without FDF
                    </h3>
                </span>It is quite common to display some image onto
                the screen, this can be done with only some lines of
                code. One can create a BACKDROP using <code class="bbCodeInline">BlzCreateFrameByType</code>,
                afterwards set texture, position and size of that
                BACKDROP and then you have a visible image on the
                screen.<br>
                BACKDROP can use all the ImageTypes Warcraft 3
                supports: BLP, TGA, DDS. DDS can only be used in
                Warcraft 3 V1.32+. For DDS the compression type
                matters, in my Test only DXT1/DXT5 worked (generated
                with GIMP).<br>
                <br>
                The Example creating a backdrop with <code class="bbCodeInline">BlzCreateFrameByType</code>
                is from (xorkatoss)<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> blademaster <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Blademaster"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_GAME_UI</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>blademaster<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>blademaster<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_CENTER</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>blademaster<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNHeroBlademaster"</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">true</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <br>
                One also might like to create a Box BackDrop, there
                are some made by Blizzard. One could use them
                without any custom TOC.<br>
                Some BACKDROPS might be unsuited for some sizes.<br>
                This are the names of this Frames:<br>
                "EscMenuBackdrop"<br>
                "QuestButtonBaseTemplate"<br>
                "ScoreScreenButtonBackdropTemplate"<br>
                "QuestButtonDisabledBackdropTemplate"<br>
                "QuestButtonPushedBackdropTemplate"<br>
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EscMenuBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">)</span>

frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonBaseTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">)</span>

frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ScoreScreenButtonBackdropTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">)</span>

frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonDisabledBackdropTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">)</span>

frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonPushedBackdropTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                If you wana change border Size, well then you have
                to handle BACKDROP in fdf there one make the border
                smaller or bigger and apply some other settings.<br>
                <br>
                <a id="FrameExampleTextNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Text without FDF
                    </h3>
                </span><br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a TEXT Frame</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyTextFrame"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Set the current Text, you can use the Warcraft 3 Color Code</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Text on |cffffcc00Screen|r"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- pos the frame</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- stop this frame from taking control of the mouse input, Might have sideeffects if the TEXT-Frame has an enable Color (but this does not have such).</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- the text is kinda small, but one can not use the FontNative onto TEXT-Frames (nether in V1.31 nor V1.32). Therefore one could scale it.</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <br>
                <a id="FrameExampleTextButtonNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        TextButton Without FDF
                    </h3>
                </span>Many want an additional clickable Button when
                it is clicked something should happen.<br>
                Let's create a GLUETEXTBUTTON looking like the
                Buttons found in Dialogs. "ScriptDialogButton" is
                their name.<br>
                But the game has some hardcoded behaviour for
                "ScriptDialogButton" when using Dialogs. Therefore
                using BlzCreateFrame can end with some Problems.
                This problem can be avoided with
                BlzCreateFrameByType giving our Frames a different
                name. Then there is not colision with the Dialog
                usage. (Sabe found that problem)<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a new Button which inherits from "ScriptDialogButton"</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- place the Button to the center of the Screen</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- set the Button's text</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"My Button Text"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- create the trigger handling the Button Clicking</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- register the Click event</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- this happens when the button is clicked</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-string">"was Clicked"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="scriptdialogbutton-jpg.322613"
                    data-src="https://www.hiveworkshop.com/attachments/scriptdialogbutton-jpg.322613/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;scriptdialogbutton-jpg.322613&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/ScriptDialogButton.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/scriptdialogbutton-jpg.322613/"
                        class="bbImage" data-zoom-target="1" style="" alt="scriptdialogbutton-jpg.322613" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                One could create a Blue Button with "DebugButton"
                instead of "ScriptDialogButton".<br>













                <div class="bbImageWrapper  js-lbImage" title="debugbutton-jpg.322610"
                    data-src="https://www.hiveworkshop.com/attachments/debugbutton-jpg.322610/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;debugbutton-jpg.322610&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/DebugButton.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/debugbutton-jpg.322610/" class="bbImage"
                        data-zoom-target="1" style="" alt="debugbutton-jpg.322610" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                <a id="FrameExampleTextButtonAutoCastEffectNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        TextButton with AutoCast Model Without FDF
                    </h3>
                </span>This example creates a ScriptDialogButton at
                the center of the Screen and places an animated
                AutoCast model (SPRITE) over/around it.<br>
                Visual parts of Models do not care about FrameSize,
                but one can scale it using BlzFrameSetScale. The
                default CommandButton Size is 0.039, therefore
                Buttonsize/0.039 fits the model to the Size of your
                button.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">Test</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create the button and place it onto the center of the screen</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.039</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.039</span><span class="prism-token prism-punctuation">)</span>   

<span class="prism-token prism-comment">-- create a Sprite copy the button's positions</span>
<span class="prism-token prism-keyword">local</span> model <span class="prism-token prism-operator">=</span>  <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SPRITE"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"SpriteName"</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- apply the model</span>
<span class="prism-token prism-function">BlzFrameSetModel</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"UI\\Feedback\\Autocast\\UI-ModalButtonOn.mdl"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Models don't care about Frame Size, to resize them one needs to scale them. The default CommandButton has a Size of 0.039. </span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetWidth</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-operator">/</span><span class="prism-token prism-number">0.039</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <a id="FrameExampleSpriteRockBoltMissileNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Sprite RockBoltMissile Without FDF
                    </h3>
                </span>How to use an World Model inside the
                UI-Frames using the Frame-SPRITE.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">Test2</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a Sprite copy the button's positions</span>
<span class="prism-token prism-keyword">local</span> model <span class="prism-token prism-operator">=</span>  <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SPRITE"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"SpriteName"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- apply the model</span>
<span class="prism-token prism-function">BlzFrameSetModel</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Abilities\\Weapons\\RockBoltMissile\\RockBoltMissile.mdl"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Models don't care about Frame Size, But world Object Models are huge . To use them in the UI one has to scale them down alot.</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.00006</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- play death animation</span>
<span class="prism-token prism-comment">-- birth = 0</span>
<span class="prism-token prism-comment">-- death = 1</span>
<span class="prism-token prism-comment">-- stand = 2</span>
<span class="prism-token prism-comment">-- morph = 3</span>
<span class="prism-token prism-comment">-- alternate = 4</span>
<span class="prism-token prism-function">BlzFrameSetSpriteAnimate</span><span class="prism-token prism-punctuation">(</span>model<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="button-with-autocast-and-rockbolt-sprite-jpg.385038"
                    data-src="https://www.hiveworkshop.com/attachments/button-with-autocast-and-rockbolt-sprite-jpg.385038/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;button-with-autocast-and-rockbolt-sprite-jpg.385038&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Button with AutoCast and RockBolt Sprite.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/button-with-autocast-and-rockbolt-sprite-jpg.385038/"
                        class="bbImage" data-zoom-target="1" style=""
                        alt="button-with-autocast-and-rockbolt-sprite-jpg.385038" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                <br>
                <a id="FrameExampleIconButtonNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        IconButton without custom FDF
                    </h3>
                </span>Another common thing is creating an Button
                visualy represented by an CommandButton-Icon. Here
                one creates 2 Frames a BUTTON the clickable part and
                a BACKDROP showing the Icon.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a new BUTTON inheriting from "ScoreScreenTabButtonTemplate". With the inherit one gains a yellow on mouse hover glowing and blocks right clicks onto the button from reaching the ground below the button</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScoreScreenTabButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--create a BACKDROP for Button which displays the Texture</span>
<span class="prism-token prism-keyword">local</span> buttonIconFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButtonIcon"</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- buttonIcon will mimic buttonFrame in size and position</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- place the Button to the left center of the Screen</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- set the Button's Size</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- set the texture</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>


<span class="prism-token prism-comment">-- create the trigger handling the Button Clicking</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- register the Click event</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- this happens when the button is clicked</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-string">"was Clicked"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="button-tuto-image-2-kopie-jpg.332433"
                    data-src="https://www.hiveworkshop.com/attachments/button-tuto-image-2-kopie-jpg.332433/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;button-tuto-image-2-kopie-jpg.332433&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Button Tuto image 2 - Kopie.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/button-tuto-image-2-kopie-jpg.332433/"
                        class="bbImage" data-zoom-target="1" style="" alt="button-tuto-image-2-kopie-jpg.332433"
                        title="" width="" height="" loading="lazy">
                </div>














                <div class="bbImageWrapper  js-lbImage" title="button-tutor-image-yellow-glowing-jpg.332432"
                    data-src="https://www.hiveworkshop.com/attachments/button-tutor-image-yellow-glowing-jpg.332432/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;button-tutor-image-yellow-glowing-jpg.332432&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Button Tutor image yellow glowing.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/button-tutor-image-yellow-glowing-jpg.332432/"
                        class="bbImage" data-zoom-target="1" style="" alt="button-tutor-image-yellow-glowing-jpg.332432"
                        title="" width="" height="" loading="lazy">
                </div>

                <br>
                There is another loaded inherit option
                "IconButtonTemplate" (blue light).<br>













                <div class="bbImageWrapper  js-lbImage" title="button-tutor-image-blue-glowing-jpg.332431"
                    data-src="https://www.hiveworkshop.com/attachments/button-tutor-image-blue-glowing-jpg.332431/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;button-tutor-image-blue-glowing-jpg.332431&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Button Tutor image blue glowing.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/button-tutor-image-blue-glowing-jpg.332431/"
                        class="bbImage" data-zoom-target="1" style="" alt="button-tutor-image-blue-glowing-jpg.332431"
                        title="" width="" height="" loading="lazy">
                </div>














                <div class="bbImageWrapper  js-lbImage" title="button-tutor-image-blue-glowing-clicked-jpg.332430"
                    data-src="https://www.hiveworkshop.com/attachments/button-tutor-image-blue-glowing-clicked-jpg.332430/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;button-tutor-image-blue-glowing-clicked-jpg.332430&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Button Tutor image blue glowing clicked.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/button-tutor-image-blue-glowing-clicked-jpg.332430/"
                        class="bbImage" data-zoom-target="1" style=""
                        alt="button-tutor-image-blue-glowing-clicked-jpg.332430" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                <br>
                <a id="FrameExampleSliderNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Slider without custom FDF
                    </h3>
                </span>Vertical Slider with an Value changed Event.
                Inside the Event it displays the new selected Value
                as message. This works out of the box. <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a vertical slider by inheriting from a Scrollbar. It will use esc menu textures</span>
<span class="prism-token prism-keyword">local</span> sliderFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span> <span class="prism-token prism-string">"SLIDER"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"TestSlider"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"QuestMainListScrollBar"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- clear the inherited attachment</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- set pos and size</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.40</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.30</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.012</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.06</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- define the area the user can choose from</span>
<span class="prism-token prism-function">BlzFrameSetMinMaxValue</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1000</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- how accurate the user can choose value</span>
<span class="prism-token prism-function">BlzFrameSetStepSize</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- register the Slider Event</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> sliderFrame<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_SLIDER_VALUE_CHANGED<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- this happens when the Slider is pushed</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"new Value"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetTriggerFrameValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                Horizontal Slider with a TEXT-Frame to it's right
                displaying the current value. While the Mouse points
                at the slider rolling the Mouse wheel results into a
                changed Value, this requires to have imported
                Templates.toc with EscMenuTemplates.fdf in the map
                running this Lua code. <a href="javascript:;" data-hash="TOC">TOC</a>.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- load the Blizzard Templates</span>
<span class="prism-token prism-keyword">local</span> loaded <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\Templates.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create the SliderFrame</span>
<span class="prism-token prism-keyword">local</span> sliderFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EscMenuSliderTemplate"</span><span class="prism-token prism-punctuation">,</span>  <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a TEXT Fame</span>
<span class="prism-token prism-keyword">local</span> sliderLable <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EscMenuLabelTextTemplate"</span><span class="prism-token prism-punctuation">,</span>  sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- place the Label to the right of the Slider's</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>sliderLable<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> sliderFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- pos the sliderFrame on the screen</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.02</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.45</span><span class="prism-token prism-punctuation">)</span> 

<span class="prism-token prism-comment">-- limits user can choose</span>
<span class="prism-token prism-function">BlzFrameSetMinMaxValue</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">360</span><span class="prism-token prism-punctuation">)</span> 
<span class="prism-token prism-comment">-- set current Value</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">90</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>sliderLable<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">" = 90"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- how accurate the user can setup the Slider, only multiplies of 5 right now, 5, 10, 15 ...</span>
<span class="prism-token prism-function">BlzFrameSetStepSize</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">5</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- register the Slider Event</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> sliderFrame<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_SLIDER_VALUE_CHANGED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- this happens when the Slider changes it's value, by user or code</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- only the value of the own Slider is known</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>sliderLable<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">" = "</span> <span class="prism-token prism-operator">..</span> string<span class="prism-token prism-punctuation">.</span><span class="prism-token prism-function">format</span><span class="prism-token prism-punctuation">(</span> <span class="prism-token prism-string">"%%.0f"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetTriggerFrameValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- scorllable with mousewheel</span>
trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- register the Mouse Wheel Event for the Slider</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> sliderFrame<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_MOUSE_WHEEL<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- this happens when the Mouse wheel is rolled while it points at the slider</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- BlzGetTriggerFrameValue() tells us in which direction the wheel was rolled</span>
<span class="prism-token prism-keyword">local</span> add
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzGetTriggerFrameValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">&gt;</span> <span class="prism-token prism-number">0</span> <span class="prism-token prism-keyword">then</span>
add <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">5</span>
<span class="prism-token prism-keyword">else</span>
add <span class="prism-token prism-operator">=</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">5</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-comment">-- the scrolling should only affect the triggering Player</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetValue</span><span class="prism-token prism-punctuation">(</span>sliderFrame<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">+</span> add<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><a id="FrameExampleCheckBoxNoFDF"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Checkbox without FDF
                    </h2>
                </span>Cause there is a default loaded Checkbox one
                can use that one to create a checkbox without
                bothering toc nor fdf as long one knows the
                name.<br>
                Possible ones are "QuestCheckBox", "QuestCheckBox2",
                "QuestCheckBox3". All of them use EscMenu Textures
                but have differnt Sizes. Although that does not
                matter much one could just change the size with
                <code class="bbCodeInline">BlzFrameSetSize</code><br>













                <div class="bbImageWrapper  js-lbImage" title="questcheckbox-jpg.322612"
                    data-src="https://www.hiveworkshop.com/attachments/questcheckbox-jpg.322612/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;questcheckbox-jpg.322612&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/QuestCheckBox.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/questcheckbox-jpg.322612/" class="bbImage"
                        data-zoom-target="1" style="" alt="questcheckbox-jpg.322612" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                This Lua code works out of the Box and will create a
                small Checkbox at the center of the screen.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestCheckBox2"</span><span class="prism-token prism-punctuation">,</span>  <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> frame<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_CHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> frame<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_UNCHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzGetTriggerFrameEvent</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> FRAMEEVENT_CHECKBOX_CHECKED <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBox was checked"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">else</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBox was unchecked"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                There also 2 other checkboxes one could use.<br>
                "ScoreScreenBottomCheckButtonTemplate" is only a
                mouse hover highlight and a checked Texture both a
                yellow light. On default loaded. Could be used
                together with a a BACKDROP.<br>
                And there is "EscMenuRadioButtonTemplate" not loaded
                on default one would have to Load
                UI\FrameDef\UI\escmenutemplates.fdf into the game
                before using it.<br>













                <div class="bbImageWrapper  js-lbImage" title="radiobox-jpg.322747"
                    data-src="https://www.hiveworkshop.com/attachments/radiobox-jpg.322747/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;radiobox-jpg.322747&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/RadioBox.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/radiobox-jpg.322747/" class="bbImage"
                        data-zoom-target="1" style="" alt="radiobox-jpg.322747" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>













                <div class="bbImageWrapper  js-lbImage" title="radioboxchecked-jpg.322748"
                    data-src="https://www.hiveworkshop.com/attachments/radioboxchecked-jpg.322748/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;radioboxchecked-jpg.322748&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/RadioBoxChecked.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/radioboxchecked-jpg.322748/" class="bbImage"
                        data-zoom-target="1" style="" alt="radioboxchecked-jpg.322748" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <a id="FrameExampleModelBarNoFdf"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        ModelBar without FDF
                    </h2>
                </span>This example shows how one can display a Bar
                Model using "STATUSBAR" without any fdf.<br>
                It is said "STATUSBAR" only supports 1s animations,
                sequzenzes after 1s are droped.<br>
                TriggerHappy encountered a situation in which units
                using the same model as the STATUSBAR were affected
                by the Bar's current animation.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted

<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> bar <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"STATUSBAR"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>        
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Screen Size does not matter but has to be there</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.00001</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.00001</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Models don't care about Frame Size, But world Object Models are huge . To use them in the UI one has to scale them down alot.</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">--BlzFrameSetModel(bar, "ui/feedback/cooldown/ui-cooldown-indicator.mdx", 0)</span>
<span class="prism-token prism-comment">--BlzFrameSetModel(bar, "ui/feedback/XpBar/XpBarConsole.mdx", 0)        </span>
<span class="prism-token prism-function">BlzFrameSetModel</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ui/feedback/progressbar/timerbar.mdx"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--BlzFrameSetModel(bar, "ui/feedback/buildprogressbar/buildprogressbar.mdx", 0)</span>
<span class="prism-token prism-comment">--BlzFrameSetMinMaxValue(bar, 0, 100)</span>
<span class="prism-token prism-keyword">local</span> i <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span>
<span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> i<span class="prism-token prism-punctuation">)</span>
i <span class="prism-token prism-operator">=</span> i <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-comment">--i = GetRandomInt(0, 100)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetValue</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"done"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <br>
                <a id="FrameExampleBar2FaceNoFdf"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        2-Face without FDF
                    </h2>
                </span>One could Create&amp;Place 2 SIMPLESTATUSBARs
                at the same spot and using different Textures to
                show progress/cooldown and alike. To change the
                current progress one uses BlzFrameSetValue onto the
                ForeGround to shows Value% from the left Side of it
                and 100-value% of the background from the right
                side.<br>
                <a href="https://www.hiveworkshop.com/attachments/386704/" target="_blank">View attachment 386704</a><a
                    href="https://www.hiveworkshop.com/attachments/386706/" target="_blank">View attachment
                    386706</a><br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">Create2Face</span><span class="prism-token prism-punctuation">(</span>parent<span class="prism-token prism-punctuation">,</span> xSize<span class="prism-token prism-punctuation">,</span> ySize<span class="prism-token prism-punctuation">,</span> createContext<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> twoFace <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLEFRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"2Face"</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> createContext<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- creating SIMPLEFRAME that way Sets a Point(s) for it, clear them</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>twoFace<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> backGround <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLESTATUSBAR"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"2FaceBackGround"</span><span class="prism-token prism-punctuation">,</span> twoFace<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> createContext<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> foreGround <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLESTATUSBAR"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"2FaceForeGround"</span><span class="prism-token prism-punctuation">,</span> backGround<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> createContext<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- creating SIMPLESTATUSBAR that way Sets a Point(s) for it, clear them</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>foreGround<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>backGround<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- mimic Size/Pos</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>foreGround<span class="prism-token prism-punctuation">,</span> twoFace<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>backGround<span class="prism-token prism-punctuation">,</span> twoFace<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>twoFace<span class="prism-token prism-punctuation">,</span> xSize<span class="prism-token prism-punctuation">,</span> ySize<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>backGround<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">100</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- default Textures</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>backGround<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Replaceabletextures\\CommandButtons\\BTNTemp"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>foreGround<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Replaceabletextures\\CommandButtons\\BTNTemp"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">return</span> twoFace
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">Create2Face</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUI"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"2Face"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Arthas/Undead-Arthas</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"2FaceForeGround"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Replaceabletextures\\CommandButtons\\BTNArthas"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"2FaceBackGround"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Replaceabletextures\\CommandButtons\\BTNHeroDeathKnight"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Blizzard/ Disabled-Blizzard</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"2FaceBackGround"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Replaceabletextures\\CommandButtonsDisabled\\DISBTNBlizzard"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"2FaceForeGround"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Replaceabletextures\\CommandButtons\\BTNBlizzard"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>        

<span class="prism-token prism-comment">-- Randomize the value</span>
<span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"2FaceForeGround"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"2FaceForeGround"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">+</span> <span class="prism-token prism-function">GetRandomInt</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-operator">-</span><span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <a id="FrameExampleBarNoFdf"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Bar without FDF
                    </h2>
                </span>This example shows how one can create a
                SIMPLESTATUSBAR without any fdf and place a BACKDROP
                Layerwise below it. All SimpleFrames are in one
                Layer or in subLayers which only Texture/String can
                inhabit. They can not create own Layers.<br>
                Hence we have to pick a Layer for the BACKDROP so it
                ends lower than the SIMPLESTATUSBAR(SimpleFrames).
                Good FrameParents/Ancestors for that are
                BlzGetFrameByName("ConsoleUIBackdrop", 0) or
                BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0) or
                BlzFrameGetParent(BlzGetOriginFrame(ORIGIN_FRAME_PORTRAIT,
                0)) basicly any Child of Gameui before the one that
                starts SimpleFrames.<br>
                BlzGetFrameByName("ConsoleUIBackdrop", 0) is the
                best of them because the others are below HP/Mp
                bars, but it exist not in Warcraft3 V1.31.1.<br>
                Creating Bars that way has the downside that the Bar
                and its Background are not interal connected. One
                needs to use hide/show/Scale/Alpha/... one each. But
                the + is one does not have to bother fdf.<br>
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted

<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\Templates.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> back <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EscMenuControlBackdropTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUIBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>back<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>back<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> bar <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLESTATUSBAR"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUI"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--BlzFrameSetAllPoints(bar, back)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> back<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.006</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.006</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> back<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.006</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.006</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNPriest"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVertexColor</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzConvertColor</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">100</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVertexColor</span><span class="prism-token prism-punctuation">(</span>back<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzConvertColor</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">100</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--BlzFrameSetMinMaxValue(frame, 0, 100)</span>
<span class="prism-token prism-keyword">local</span> i <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span>
<span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> i<span class="prism-token prism-punctuation">)</span>
i <span class="prism-token prism-operator">=</span> i <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="priestbar-jpg.384992"
                    data-src="https://www.hiveworkshop.com/attachments/priestbar-jpg.384992/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;priestbar-jpg.384992&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/PriestBar.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/priestbar-jpg.384992/" class="bbImage"
                        data-zoom-target="1" style="" alt="priestbar-jpg.384992" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                Instead of the Priest Icon one could use a Texture
                more fited for Bars like the one from the
                xp-Bar.<br>
                <code
                    class="bbCodeInline">BlzFrameSetTexture(bar, "ui\\feedback\\xpbar\\human-bigbar-fill", 0, true)</code><br>













                <div class="bbImageWrapper  js-lbImage" title="xpbar-jpg.384991"
                    data-src="https://www.hiveworkshop.com/attachments/xpbar-jpg.384991/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;xpbar-jpg.384991&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/XpBar.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/xpbar-jpg.384991/" class="bbImage"
                        data-zoom-target="1" style="" alt="xpbar-jpg.384991" title="" width="" height="" loading="lazy">
                </div>

                <br>
                Because it is a gray texture it might be smart to
                color it which can be done with 2 natives (<b>Crash
                    in Warcraft3 V1.31</b>)<br>
                <code class="bbCodeInline">BlzFrameSetVertexColor(bar, BlzConvertColor(255, 255, 100, 255))</code><br>













                <div class="bbImageWrapper  js-lbImage" title="xpbar-colored-jpg.384993"
                    data-src="https://www.hiveworkshop.com/attachments/xpbar-colored-jpg.384993/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;xpbar-colored-jpg.384993&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/XpBar Colored.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/xpbar-colored-jpg.384993/" class="bbImage"
                        data-zoom-target="1" style="" alt="xpbar-colored-jpg.384993" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                Instead of such coloring one could use the teamcolor
                textures for easy simple one colored bars.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor00"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor01"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor02"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor09"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor10"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor20"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"replaceabletextures\\teamcolor\\teamcolor27"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="playercolor-bars-jpg.384990"
                    data-src="https://www.hiveworkshop.com/attachments/playercolor-bars-jpg.384990/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;playercolor-bars-jpg.384990&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/PlayerColor Bars.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/playercolor-bars-jpg.384990/" class="bbImage"
                        data-zoom-target="1" style="" alt="playercolor-bars-jpg.384990" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                Sometimes one wants the colorTexture used by a
                player, that can be done with some simple string
                work.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">GetPlayerColorTexture</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetPlayerColor</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">&lt;</span> <span class="prism-token prism-number">10</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-keyword">return</span> <span class="prism-token prism-string">"ReplaceableTextures\\TeamColor\\TeamColor0"</span><span class="prism-token prism-operator">..</span><span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetPlayerColor</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">else</span>
<span class="prism-token prism-keyword">return</span> <span class="prism-token prism-string">"ReplaceableTextures\\TeamColor\\TeamColor"</span><span class="prism-token prism-operator">..</span><span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetPlayerColor</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <a id="FrameExampleEditboxNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        EDITBOX without custom FDF
                    </h3>
                </span>One could create a EditBox after one Loaded
                in the Templates.toc. Although one would not be able
                to change the text size inside the Editbox.<br>
                <br>
                <a id="FrameExampleQuestLogFrame"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Create a Textarea in QuestDialog
                    </h3>
                </span>In this example I show you how one creates a
                Textarea as child of QuestDialog. I made this for
                someone on Discord but I think it would be a nice
                addition because it shows the interaction with
                existing Frames and is compact.<br>
                The Textarea is created as child of the QuestDialog
                so it is only shown when QuestDialog is shown. It
                takes the same place as the quest info text,
                displays the quest text. Because they take the same
                place it would not be smart to show both at the same
                Time, they would overlap and make it confusing. But
                we only have limited Space and want to stay in the
                visual QuestDialog, hence we make it so that only
                one of them is shown and we add a button to swap
                which is shown right now.<br>
                <br>
                This example requires loading in
                ui\framedef\ui\escmenutemplates.fdf contained in
                Templates.toc to create the TEXTAREA. The whole
                thing would work with a BACKDROP which would remove
                the requirement.<br>
                <br>
                This is the code doing this.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">function</span> QuestLogFrameAction <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-comment">// do this only for the clicking player</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-comment">// toggle visibility for ("QuestDisplayBackdrop", 0)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestDisplayBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">not</span> <span class="prism-token prism-function">BlzFrameIsVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestDisplayBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">// ("CustomLogFrame", 0) is shown when the other is not shown</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomLogFrame"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">not</span> <span class="prism-token prism-function">BlzFrameIsVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestDisplayBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endif</span>
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-keyword">function</span> CreateQuestLogFrame <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> textArea
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> buttonX
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">trigger</span> tri
<span class="prism-token prism-comment">// load in ui\framedef\ui\escmenutemplates.fdf</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\Templates.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">// Some Frames do not exist until required. QuestDialog is such one. Force open it to bring it into existince.</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameClick</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"UpperButtonBarQuestsButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">// force closing QuestDialog</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameClick</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestAcceptButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">// Create a TEXTAREA based on "EscMenuTextAreaTemplate" with the new Name "CustomLogFrame" as child of ("QuestDialog", 0)</span>
<span class="prism-token prism-keyword">set</span> textArea <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXTAREA"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CustomLogFrame"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestDialog"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"EscMenuTextAreaTemplate"</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">// copy the positions of ("QuestDisplayBackdrop", 0)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestDisplayBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">// text</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"This is the customLogFrame"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">// hide it on default</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">// Create a button at the bottom left of the QuestDialog. It will swap the current shown Frame</span>
<span class="prism-token prism-keyword">set</span> buttonX <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestDialog"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>buttonX<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_TOPLEFT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestDisplayBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_BOTTOMLEFT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>buttonX<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetHeight</span><span class="prism-token prism-punctuation">(</span>buttonX<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonX<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Show/Hide Log"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">// create the buttons actionTrigger</span>
<span class="prism-token prism-keyword">set</span> tri <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>tri<span class="prism-token prism-punctuation">,</span> buttonX<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEEVENT_CONTROL_CLICK</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>tri<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span> QuestLogFrameAction<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">set</span> buttonX <span class="prism-token prism-operator">=</span> <span class="prism-token prism-boolean">null</span>
<span class="prism-token prism-keyword">set</span> textArea <span class="prism-token prism-operator">=</span> <span class="prism-token prism-boolean">null</span>
<span class="prism-token prism-keyword">set</span> tri <span class="prism-token prism-operator">=</span> <span class="prism-token prism-boolean">null</span>
<span class="prism-token prism-keyword">endfunction</span></code></pre>
                    </div>
                </div><br>
                <br>
                <br>
                <a id="FrameExampleSomethingMoreComplexNoFDF"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Creating a Multipage Frame
                    </h3>
                </span>The previous examples are quite basic and
                show one type of Frame while that is quite useful it
                does not show the interaction of multiple Frames and
                does not show much of the parent-child rule. This
                example is more complex with multiple Frame Types,
                events and shows a way to create a hardcoded hide
                able Box with 3 pages each with different content.
                The pages are changed by clicking a page button at
                the bottom.<br>
                The first Page shows infos about Uther the second a
                col of Buttons creating an unit and the 3. a simple
                calculator that + - * / for 2 changeable numbers<br>
                This example is done without any custom fdf but
                requires loading escmenutemplates.fdf. It also shows
                how bad UI-Frame code can end up.<br>













                <div class="bbImageWrapper  js-lbImage" title="img-a-page-1-cut-jpg.350380"
                    data-src="https://www.hiveworkshop.com/attachments/img-a-page-1-cut-jpg.350380/?temp_hash=79d022987521c9d981798303ee2a15a0"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;img-a-page-1-cut-jpg.350380&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Img a page 1 cut.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/img-a-page-1-cut-jpg.350380/?temp_hash=79d022987521c9d981798303ee2a15a0"
                        class="bbImage" data-zoom-target="1" style="" alt="img-a-page-1-cut-jpg.350380" title=""
                        width="" height="" loading="lazy">
                </div>














                <div class="bbImageWrapper  js-lbImage" title="img-a-page-2-cut-jpg.350381"
                    data-src="https://www.hiveworkshop.com/attachments/img-a-page-2-cut-jpg.350381/?temp_hash=79d022987521c9d981798303ee2a15a0"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;img-a-page-2-cut-jpg.350381&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Img a page 2 cut.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/img-a-page-2-cut-jpg.350381/?temp_hash=79d022987521c9d981798303ee2a15a0"
                        class="bbImage" data-zoom-target="1" style="" alt="img-a-page-2-cut-jpg.350381" title=""
                        width="" height="" loading="lazy">
                </div>














                <div class="bbImageWrapper  js-lbImage" title="img-a-page-3-cut-jpg.350382"
                    data-src="https://www.hiveworkshop.com/attachments/img-a-page-3-cut-jpg.350382/?temp_hash=79d022987521c9d981798303ee2a15a0"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;img-a-page-3-cut-jpg.350382&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Img a page 3 cut.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/img-a-page-3-cut-jpg.350382/?temp_hash=79d022987521c9d981798303ee2a15a0"
                        class="bbImage" data-zoom-target="1" style="" alt="img-a-page-3-cut-jpg.350382" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- allow to generate Frames from ui\framedef\ui\escmenutemplates.fdf</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\Templates.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a hidden Frame a container for all</span>
<span class="prism-token prism-keyword">local</span> windowcontainerFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"FRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a box as child of the container</span>
<span class="prism-token prism-keyword">local</span> boxFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> windowcontainerFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"EscMenuBackdrop"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>boxFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- The option to close (hide) the box</span>
<span class="prism-token prism-keyword">local</span> closeButton <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>closeButton<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>closeButton<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"X"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>closeButton<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- this trigger handles clicking the close Button, it hides the Logical super Parent when the close Button is clicked for the clicking Player.</span>
<span class="prism-token prism-keyword">local</span> closeTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>closeTrigger<span class="prism-token prism-punctuation">,</span> closeButton<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>closeTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>windowcontainerFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Because one can close (hide) the box, one also should be able to show it again, this is done with an button that is only visible while the player is in Menu (F10)</span>
<span class="prism-token prism-keyword">local</span> showButton <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InsideMainPanel"</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>showButton<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>showButton<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"show Info Frame"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>showButton<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> showTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>showTrigger<span class="prism-token prism-punctuation">,</span> showButton<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>showTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>windowcontainerFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- create 3 Buttons based on ScriptDialogButton</span>
<span class="prism-token prism-keyword">local</span> buttonPage1 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonPage2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonPage3 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>    

<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>buttonPage1<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>buttonPage2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>buttonPage3<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.08</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonPage1<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Page 1"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonPage2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Page 2"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>buttonPage3<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Page 3"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- pos the 2.Button at the bottom</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>buttonPage2<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.017</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- the 3. Button to it's right</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>buttonPage3<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> buttonPage2<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- the 1. Button to it's left</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>buttonPage1<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> buttonPage2<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Now we got the button in order: 1 2 3, but don't have to bother the real position and sizes</span>

<span class="prism-token prism-comment">-- create a Trigger handling the Page Button Clicks</span>
<span class="prism-token prism-keyword">local</span> pageTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>pageTrigger<span class="prism-token prism-punctuation">,</span> buttonPage1<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>pageTrigger<span class="prism-token prism-punctuation">,</span> buttonPage2<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>pageTrigger<span class="prism-token prism-punctuation">,</span> buttonPage3<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- create a container Frame for each Page, this frames are mostly logical. They simple down the page swapping a lot.</span>
<span class="prism-token prism-keyword">local</span> containerFramePage1 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"FRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> containerFramePage2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"FRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> containerFramePage3 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"FRAME"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- the containers are a bit smaller than the box to avoid colisions with the border and the buttons at the bottom</span>
<span class="prism-token prism-comment">-- the containers are given a size to place contentFrames relative to the containers. This allows to place it to any valid coords and it will still work as wanted.</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>containerFramePage1<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.36</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>containerFramePage2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.36</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>containerFramePage3<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.36</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- place the containers to the center of the box</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>containerFramePage1<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>containerFramePage2<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>containerFramePage3<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> boxFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- hide the page containers on default</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage1<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage3<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>pageTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> clickedButton <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- only the active player should be affected</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-comment">-- hide all pages, could be optimized monitoring the current selected but won't do that in this example.</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage1<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage3<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- show the page based on the clicked button.</span>
<span class="prism-token prism-keyword">if</span> clickedButton <span class="prism-token prism-operator">==</span> buttonPage1 <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage1<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">elseif</span> clickedButton <span class="prism-token prism-operator">==</span> buttonPage2 <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">elseif</span> clickedButton <span class="prism-token prism-operator">==</span> buttonPage3 <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>containerFramePage3<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Page 1 Content</span>
<span class="prism-token prism-comment">-- A page that shows some text about uther taken from https://wow.gamepedia.com/Uther_the_Lightbringer</span>
<span class="prism-token prism-keyword">local</span> parent <span class="prism-token prism-operator">=</span> containerFramePage1
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNHeroPaladin"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Paladin of the Silver Hand"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1.2</span><span class="prism-token prism-punctuation">)</span>

frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.02</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Uther"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1.3</span><span class="prism-token prism-punctuation">)</span>

frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXTAREA"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"EscMenuTextAreaTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Lord Uther the Lightbringer, or Sire Uther Lightbringer, was the first of the five paladins of the Knights of the Silver Hand along with Turalyon, Saidan Dathrohan, Tirion Fordring, and Gavinrad the Dire. He led his order in the battle against the Horde during the Second War. During the Third War, Uther was betrayed and murdered by his beloved pupil, Prince Arthas, while defending the urn carrying the ashes of Arthas' father, King Terenas. After death, his soul was deemed worthy of entering the plane of Bastion within the Shadowlands. "</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"|cffffcc00Personality|r|nThough zealous and weathered, Uther's eyes show kindness and wisdom. He is Lordaeron's self-appointed defender, but regrets that violence is the only way to solve some problems. Possessing a rich, commanding voice and great physical strength, Uther is also capable of gentleness and compassion, though he does not suffer fools. He is the epitome of the paladin warrior — a mighty foe to his enemies and a bastion of hope to his allies."</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"|cffffcc00In combat|r|nUther strides directly into melee, placing himself in the center of the most brutal combat. He places himself in danger to spare his allies. He is at his peak against demons and undead, and brings his full array of spells and abilities to bear against these creatures — smites, banishing strikes, power turning, searing light from his hammer, hooks of binding and dispel evil. He uses lay on hands to blast undead that resist his hammer. Against truly mighty opponents, Uther attacks with his Big Smash feat. He prefers leading others into battle but fights alone if the situation warrants. Uther endangers himself to help others if he must, and is willing to sacrifice himself for others — but he does not do so foolishly, as he knows how valuable he is to Lordaeron"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"|cffffcc00Equipment|r"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"|cffffcc00Hammer of the Lightbringer|r|nThe two-handed hammer’s haft is polished mahogany, while the head is adamantine. A silver hand emblem rests in a bed of gold design on either side. This mighty weapon was forged when Archbishop Faol created the Knights of the Silver Hand, and the archbishop bequeathed it to the order’s first Grand Master — Uther the Lightbringer. A group of paladins recovered the hammer after Uther's death, but none has thought himself worthy of carrying the legendary weapon."</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"|cffffcc00Gloves of the Silver Hand|r|nUther Lightbringer is said to have been the first to enchant these gloves to aid him in the battle against the Scourge. These are large, padded leather and mail gloves bleached pure white with the holy symbols of the Silver Hand burned into the palms. Although they are large mail items, they are remarkably light."</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Although the original shroud that covered the fallen paladin Uther Lightbringer of the Knights of the Silver Hand was lost years ago in frequent skirmishes between the Scourge and the Alliance, rumors of the shroud remain. Some of the remaining priests of the Holy Light have infused linen with power in honor of their fallen champion. These shrouds are made of soft, white linen, about 6 feet by 3 feet. The divine magic used to create these creates a gray image of a dead paladin, usually the face of the creator of the shroud."</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Uther is universally known as the Lightbringer but he hasn't been always addressed as such. In fact, it was General Turalyon who got the idea of this nickname after seeing the inspiration that the leader of the Silver Hand had on his men. When he was charged by Khadgar and Uther as Supreme Commander of the Alliance he responded: \"And I thank you, Uther the Lightbringer, \" Turalyon replied, and he saw the older Paladin's eyes widen at the new title. \"For so shall you be known henceforth, in honor of the Holy Light you brought us this day.\" Uther bowed, clearly pleased, then turned without another word and walked back toward the other knights of the Silver Hand, no doubt to tell them their marching orders."</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Page 2 Content</span>
<span class="prism-token prism-comment">-- a col of custom Buttons this Page is bad done one actually should define a function to prevent the repeating same lines, but I won't do that in this example.</span>
parent <span class="prism-token prism-operator">=</span> containerFramePage2
<span class="prism-token prism-keyword">local</span> buttonTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonData <span class="prism-token prism-operator">=</span> <span class="prism-token prism-punctuation">{</span><span class="prism-token prism-punctuation">}</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">CreateUnit</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> buttonData<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> prevFrame<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">,</span> text<span class="prism-token prism-punctuation">,</span> unitId
unitId <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">FourCC</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Hpal"</span><span class="prism-token prism-punctuation">)</span>
button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"IconButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
icon <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
buttonData<span class="prism-token prism-punctuation">[</span>button<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitId
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetObjectName</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

unitId <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">FourCC</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Hamg"</span><span class="prism-token prism-punctuation">)</span>
button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"IconButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
icon <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
buttonData<span class="prism-token prism-punctuation">[</span>button<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitId
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetObjectName</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

unitId <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">FourCC</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Hmkg"</span><span class="prism-token prism-punctuation">)</span>
button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"IconButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
icon <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
buttonData<span class="prism-token prism-punctuation">[</span>button<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitId
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetObjectName</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

unitId <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">FourCC</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Hblm"</span><span class="prism-token prism-punctuation">)</span>
button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"IconButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
icon <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
buttonData<span class="prism-token prism-punctuation">[</span>button<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitId
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetObjectName</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

unitId <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">FourCC</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Hvwd"</span><span class="prism-token prism-punctuation">)</span>
button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"IconButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
icon <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
buttonData<span class="prism-token prism-punctuation">[</span>button<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitId
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetObjectName</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

unitId <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">FourCC</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Hjai"</span><span class="prism-token prism-punctuation">)</span>
button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"IconButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
icon <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
buttonData<span class="prism-token prism-punctuation">[</span>button<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitId
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetObjectName</span><span class="prism-token prism-punctuation">(</span>unitId<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

<span class="prism-token prism-comment">-- Page 3 Content</span>
parent <span class="prism-token prism-operator">=</span> containerFramePage3
<span class="prism-token prism-keyword">local</span> editBox1<span class="prism-token prism-punctuation">,</span> editBox2<span class="prism-token prism-punctuation">,</span> result<span class="prism-token prism-punctuation">,</span> editboxTrigger

editBox1 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EDITBOX"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"EscMenuEditBoxTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
editBox2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EDITBOX"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"EscMenuEditBoxTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
result <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>result<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Result"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetScale</span><span class="prism-token prism-punctuation">(</span>result<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1.4</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>editBox1<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>editBox2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>editBox1<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>editBox2<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> editBox1<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>result<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>

button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"+"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
editboxTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>result<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox1<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">+</span> <span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox2<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"-"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
editboxTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>result<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox1<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">-</span> <span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox2<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"*"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
editboxTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>result<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox1<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">*</span> <span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox2<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button

button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"/"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_LEFT<span class="prism-token prism-punctuation">,</span> prevFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_RIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
editboxTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>editboxTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>result<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox1<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">/</span> <span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>editBox2<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
prevFrame <span class="prism-token prism-operator">=</span> button



<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"done"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <br>
                <a id="KeyboardFocus"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Keyboard Focus
                    </h2>
                </span>(Text)Buttons have the habit to keep the
                keyboard focus as soon they are pressed (with the
                mouse). When such a button got the keyboard focus,
                then hotkeys won't work anymore and pressing
                return/space will do another control-click. The user
                can give the focus back to the game by left clicking
                on the playable world.<br>
                As mapper you also have the power to shift the
                focus. CanFight found a nice, easy way to solve the
                keyboard focus problem: inside the buttons pressed
                callback one disables and enables the button, then
                it counts as clicked and the button loses focus.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">-- Buttons of the Frame group tend to keep the input focus when clicked.</span>
<span class="prism-token prism-comment">-- By disabling them and enabling them again this focus is cleared.</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>This can also be done for only the clicking
                player, in case the enable state of the button is
                not the same for all players.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                Sadly this Technique can produce a bug, when the
                Button is clicked and a pressed arrow key is
                released almost at the same time the camera will
                keep panning even without holding the arrow key
                (discovered by Uncle), another mouse click by the
                user somewhere stops the auto panning.<br>
                Uncle found later a way to stop the paning by code
                using <code class="bbCodeInline">StopCameraForPlayerBJ()</code>
                or <code class="bbCodeInline">StopCamera()</code><br>
                <br>
                Editboxes will also Keep the keyboard focus when
                they are clicked.<br>
                <br>
                <br>
                <a id="ToolTips"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        ToolTips
                    </h2>
                </span>In the warcraft 3's UI-framework, Tooltips
                are also frames. With that they can be more complex
                have child-Frames and be from various frametypes.
                Therefore they can display alot of different
                things.<br>
                Most Frames can have a Tooltip, but it has to be
                from the same Group. From the SimpleFrame group only
                SIMPLEBUTTON can have a Tooltip.<br>
                This capitel covers Tooltips for the Frame group.
                While most is the same for both groups, there are
                small differences.<br>
                A Tooltip-Frames is visible, if the mouse does point
                at the primary Frame. The enable State of a Frame
                does not alter the Tooltip behaviour but hiding the
                Frame does.<br>
                It can happen that the Tooltip-Frame itself gets
                malformed if it leaves the 4:3 Screen, the children
                of the Tooltip-Frame are unaffected, hence it is
                suggested to add an empty FRAME parent for the
                acutal wanted Tooltip-Frame.<br>
                <br>
                Setting up the Tooltip is quite simple. This native
                is used to make a tooltip-Frame become some frames
                tooltip.<br>
                <code
                    class="bbCodeInline">BlzFrameSetTooltip takes framehandle frame, framehandle tooltip returns nothing</code><br>
                With using this native the tooltip visible rule
                activades.<br>
                <br>
                <a id="ToolTips_Example"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Tooltip Examples
                    </h3>
                </span>Let's create a TextButton with a TEXT
                Tooltip. This works out of the Box without any
                custom Toc or custom fdf.<br>
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a new Button which inherits from "ScriptDialogButton"</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- place the Button to the center of the Screen</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- set the Button's text</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"My Button Text"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Create a TEXT-Frame</span>
<span class="prism-token prism-keyword">local</span> tooltipFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyScriptDialogButtonTooltip"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- tooltipFrame becomes button's tooltip</span>
<span class="prism-token prism-function">BlzFrameSetTooltip</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> tooltipFrame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Place the Tooltip above the Button </span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>tooltipFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Prevent the TEXT from taking mouse control</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>tooltipFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>tooltipFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Nothing will Happen when you click this Button."</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><span style="color: orange">
                    <h3 style="margin: 0">
                        BoxText tooltip
                    </h3>
                </span>The last example works but a text in a Box
                would be better. This is done by creating an
                BACKDROP the Box and a TEXT Frame as the child of
                the Box. The Box becomes the tooltip, as Child the
                Text will share the visibility of it's Parent the
                box.<br>
                For the BACKDROP we use "QuestButtonBaseTemplate".
                <br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a new Button which inherits from "ScriptDialogButton"</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- place the Button to the center of the Screen</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- set the Button's text</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"My Button Text"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Create the Background a Backdrop</span>
<span class="prism-token prism-keyword">local</span> tooltipFrameBackGround <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonBaseTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.025</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Create the Text as child of the Background</span>
<span class="prism-token prism-keyword">local</span> tooltipFrameText <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyScriptDialogButtonTooltip"</span><span class="prism-token prism-punctuation">,</span> tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Copy Size and Position with a small offset.</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- The background becomes the button's tooltip, the Text as child of the background will share the visibility</span>
<span class="prism-token prism-function">BlzFrameSetTooltip</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> tooltipFrameBackGround<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Place the Tooltip above the Button </span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Prevent the TEXT from taking mouse control</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Nothing will Happen when you click this Button."</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <a id="ToolTips_Dynamic"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        BoxedText ToolTips Dynamic amount of Lines
                    </h3>
                </span>The previous example is okay, but there is
                something quite a hassle about it, one has to set
                the size of the box. it would be much better when
                the box fits itself to the text.<br>
                This can be done, Instead of making the text fit
                into the box one makes the Box extend to the text's
                postion. The game even supports one in handling
                multilines with using 0 as Height for the
                TEXT-Frame. But one has to now care that the box is
                relative to the text means one has to place the text
                with the box's additional size.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- create a new Button which inherits from "ScriptDialogButton"</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"GLUETEXTBUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScriptDialogButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- place the Button to the center of the Screen</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- set the Button's text</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"My Button Text"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Create the Background a Backdrop</span>
<span class="prism-token prism-keyword">local</span> tooltipFrameBackGround <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonBaseTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- Create the Text as child of the Background</span>
<span class="prism-token prism-keyword">local</span> tooltipFrameText <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyScriptDialogButtonTooltip"</span><span class="prism-token prism-punctuation">,</span> tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- the text has a Width of 0.25, and starts a new line when the given text is longer</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Copy Size and Position with a small offset.</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> tooltipFrameText<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOMLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-operator">-</span><span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>tooltipFrameBackGround<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> tooltipFrameText<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPRIGHT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- The background becomes the button's tooltip, the Text as child of the background will share the visibility</span>
<span class="prism-token prism-function">BlzFrameSetTooltip</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> tooltipFrameBackGround<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Place the Tooltip above the Button </span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.01</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Prevent the TEXT from taking mouse control</span>
<span class="prism-token prism-function">BlzFrameSetEnable</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>tooltipFrameText<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Nothing will Happen when you click this Button."</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><a id="ToolTips_SimpleFrame"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        SimpleFrame ToolTip
                    </h3>
                </span>a working example of an SimpleFrameTooltip.
                It creates a "SIMPLEBUTTON" based on a Blueprint
                from fdf and a code driven "SIMPLESTATUSBAR". The
                "SIMPLESTATUSBAR" is used as icon and tooltip.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> simpleFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"UpperButtonBarButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUI"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>simpleFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> icon <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SIMPLESTATUSBAR"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"ConsoleUI"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameClearAllPoints</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetPoint</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_BOTTOM<span class="prism-token prism-punctuation">,</span> simpleFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOP<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.006</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.04</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNPriest"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">100</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTooltip</span><span class="prism-token prism-punctuation">(</span>simpleFrame<span class="prism-token prism-punctuation">,</span> icon<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- SimpleFrameTooltip is not hidden by calling BlzFrameSetTooltip, hide it</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>icon<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                Many blizzard's made BACKDROPs can be used. One
                could look here
                https://www.hiveworkshop.com/threads/ui-list-default-mainframes.317884/.<br>
                <br>
                BlzFrameIsVisible(frame) also returns the correct
                value for frames working as tooltips, This is async
                hence quite fast but also dangerous. It could be
                used to perform an IsFrame hovered without
                enter/Leaver events (which are sending network
                packages). When doing that one creates an empty
                "FRAME" and defines it as Tooltip sets up a way to
                know which tooltip and Frame belong together and
                periodicly check for the visiblity of the Tooltip
                "FRAME", if it is visible and not the last hovered
                one you have the async enter event.<br>
                <br>
                Undoing the tooltip state is more problematic. One
                could create a new FRAME/SIMPLEFRAME as replacement
                but this would still not make the old Tooltip a
                normal (Simple)Frame again. Such<br>
                <br>
                <br>
                <a id="FrameEvents"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        FrameEvents
                    </h2>
                </span>











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_CONTROL_CLICK</span>             <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_MOUSE_ENTER</span>               <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_MOUSE_LEAVE</span>               <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_MOUSE_UP</span>                  <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">4</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_MOUSE_DOWN</span>                <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_MOUSE_WHEEL</span>               <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_CHECKBOX_CHECKED</span>          <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">7</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_CHECKBOX_UNCHECKED</span>        <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">8</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_EDITBOX_TEXT_CHANGED</span>      <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">9</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_POPUPMENU_ITEM_CHANGED</span>    <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">10</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_MOUSE_DOUBLECLICK</span>         <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">11</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_SPRITE_ANIM_UPDATE</span>        <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">12</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_SLIDER_VALUE_CHANGED</span>      <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">13</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_DIALOG_CANCEL</span>             <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">14</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_DIALOG_ACCEPT</span>             <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">15</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_EDITBOX_ENTER</span>             <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">16</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div>This is the result of tests about Frame-Events
                and Frame-Levels done in 1.31.1.<br>
                <br>
                <span style="color: orange">FRAMEEVENT_CONTROL_CLICK</span>
                - when activading a Frame either by releasing the
                left mouse button (the original mouse click has to
                be inside the Button) or when a Frame has Focus and
                space or enter/return are pressed. This Event
                happens before FRAMEEVENT_MOUSE_UP.<br>
                In fdf ControlStyle "CLICKONMOUSEDOWN", let this
                event happen at mouse click instead of release.<br>
                <span style="color: orange">FRAMEEVENT_MOUSE_ENTER</span>
                - the mouse Cursor enters the frame<br>
                <span style="color: orange">FRAMEEVENT_MOUSE_LEAVE</span>
                - the mouse Cursor leaves the frame<br>
                <span style="color: orange">FRAMEEVENT_MOUSE_UP</span>
                - when releasing the left, right or wheel mouse
                button and the mouse cursor is currently inside the
                frame<br>
                <span style="color: orange">FRAMEEVENT_MOUSE_DOWN</span>
                - does nothing or no Frame accept it.<br>
                <span style="color: orange">FRAMEEVENT_MOUSE_WHEEL</span>
                - happens when the mouse is over the Frame and the
                Wheel is rolled. The direction of the rolling can be
                detected in the Event by checking
                BlzGetTriggerFrameValue<br>
                <div style="margin-left: 20px">+120 -&gt;
                    Forward<br>
                    -120 -&gt; Backwards​</div>I would check for:
                bigger 0 or smaller 0<br>
                <span style="color: orange">FRAMEEVENT_CHECKBOX_CHECKED</span>
                - check an unchecked checkbox<br>
                <span style="color: orange">FRAMEEVENT_CHECKBOX_UNCHECKED</span>
                - uncheck a checked checkbox<br>
                <span style="color: orange">FRAMEEVENT_EDITBOX_TEXT_CHANGED</span>
                - remove or add text. By user or Code.<br>
                <span style="color: orange">FRAMEEVENT_POPUPMENU_ITEM_CHANGED</span>
                - user selected an Option in a popupmenu
                BlzGetTriggerFrameValue tells you which index.<br>
                <span style="color: orange">FRAMEEVENT_MOUSE_DOUBLECLICK</span>
                - does nothing or no Frame accept it.<br>
                <span style="color: orange">FRAMEEVENT_SPRITE_ANIM_UPDATE</span>
                - ?<br>
                <span style="color: orange">FRAMEEVENT_SLIDER_VALUE_CHANGED</span>
                - when altering the value of a slider or scrollbar.
                By user or Code.<br>
                <span style="color: orange">FRAMEEVENT_DIALOG_CANCEL</span>
                - When activading the cancel button of a Dialog<br>
                <span style="color: orange">FRAMEEVENT_DIALOG_ACCEPT</span>
                - When activading the accept button of a Dialog<br>
                <span style="color: orange">FRAMEEVENT_EDITBOX_ENTER</span>
                - Pressing enter/return when the Frame has
                Focus.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        FrameEvent Getters
                    </h3>
                </span>











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-function">BlzGetTriggerFrame</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">framehandle</span>
<span class="prism-token prism-function">BlzGetTriggerFrameEvent</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">frameeventtype</span>
<span class="prism-token prism-function">BlzGetTriggerFrameValue</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">real</span>
<span class="prism-token prism-function">BlzGetTriggerFrameText</span>  <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">string</span>
<span class="prism-token prism-function">GetTriggerPlayer</span>  <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">player</span></code></pre>
                    </div>
                </div><br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        FrameTypes
                    </h3>
                </span>Which FrameTypes can have which
                frameevents?<br>
                <span style="color: orange">BACKDROP</span><br>
                <div style="margin-left: 20px">None​</div><span style="color: orange">BUTTON</span><br>
                <div style="margin-left: 20px">CONTROL_CLICK,
                    MOUSE_ENTER, MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​
                </div><span style="color: orange">CHATDISPLAY</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL
                    (CONTROL_CLICK with BlzFrameClick)​</div><span style="color: orange">CHECKBOX</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL,
                    CHECKBOX_CHECKED, CHECKBOX_UNCHECKED
                    (CONTROL_CLICK with BlzFrameClick)​</div><span style="color: orange">CONTROL</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP​</div><span style="color: orange">DIALOG</span><br>
                <div style="margin-left: 20px">DIALOG_CANCEL,
                    DIALOG_ACCEPT​</div><span style="color: orange">EDITBOX</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL,
                    EDITBOX_TEXT_CHANGED, EDITBOX_ENTER
                    (CONTROL_CLICK with BlzFrameClick)​</div><span style="color: orange">FRAME</span><br>
                <div style="margin-left: 20px">None, (Blocks
                    previous created Frames of Level 0)​</div><span style="color: orange">GLUEBUTTON</span><br>
                <div style="margin-left: 20px">CONTROL_CLICK,
                    MOUSE_ENTER, MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​
                </div><span style="color: orange">GLUECHECKBOX</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL,
                    CHECKBOX_CHECKED, CHECKBOX_UNCHECKED
                    (CONTROL_CLICK with BlzFrameClick)​</div><span style="color: orange">GLUEEDITBOX</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL,
                    EDITBOX_TEXT_CHANGED, EDITBOX_ENTER
                    (CONTROL_CLICK with BlzFrameClick)​</div><span style="color: orange">GLUEPOPUPMENU</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_WHEEL, CONTROL_CLICK,
                    POPUPMENU_ITEM_CHANGED​</div><span style="color: orange">GLUETEXTBUTTON</span><br>
                <div style="margin-left: 20px">CONTROL_CLICK,
                    MOUSE_ENTER, MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​
                </div><span style="color: orange">HIGHLIGHT</span><br>
                <div style="margin-left: 20px">None​</div><span style="color: orange">LISTBOX</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​</div><span style="color: orange">MENU</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​</div><span style="color: orange">MODEL</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL
                    (CONTROL_CLICK with BlzFrameClick)<br>
                    (Only in the screen space taken, this has
                    nothing to do with the visual part)​</div><span style="color: orange">POPUPMENU</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_WHEEL, CONTROL_CLICK,
                    POPUPMENU_ITEM_CHANGED​</div><span style="color: orange">SCROLLBAR</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL,
                    SLIDER_VALUE_CHANGED​</div><span style="color: orange">SIMPLEBUTTON</span><br>
                <div style="margin-left: 20px">CONTROL_CLICK​</div>
                <span style="color: orange">SIMPLECHECKBOX</span><br>
                <div style="margin-left: 20px">None​</div><span style="color: orange">SIMPLEFRAME</span><br>
                <div style="margin-left: 20px">None​</div><span style="color: orange">SIMPLESTATUSBAR</span><br>
                <div style="margin-left: 20px">None​</div><span style="color: orange">SLASHCHATBOX</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL,
                    EDITBOX_TEXT_CHANGED, EDITBOX_ENTER
                    (CONTROL_CLICK with BlzFrameClick)​</div><span style="color: orange">SLIDER</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL,
                    SLIDER_VALUE_CHANGED (CONTROL_CLICK with
                    BlzFrameClick)​</div><span style="color: orange">SPRITE</span><br>
                <div style="margin-left: 20px">None​</div><span style="color: orange">TEXT</span><br>
                <div style="margin-left: 20px">CONTROL_CLICK,
                    MOUSE_ENTER, MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​
                </div><span style="color: orange">TEXTAREA</span><br>
                <div style="margin-left: 20px">MOUSE_ENTER,
                    MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​</div><span style="color: orange">TEXTBUTTON</span><br>
                <div style="margin-left: 20px">CONTROL_CLICK,
                    MOUSE_ENTER, MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​
                </div><span style="color: orange">TIMERTEXT</span><br>
                <div style="margin-left: 20px">CONTROL_CLICK,
                    MOUSE_ENTER, MOUSE_LEAVE, MOUSE_UP, MOUSE_WHEEL​
                </div><br>
                <br>
                <a id="FrameAndMultiplayer"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Frames &amp; Multiplayer
                    </h2>
                </span>Warcraft 3 uses for its network functionality
                a variation of a technique called Lockstep protocol.
                It is a technic which shares only a bare minimum of
                data, only the needed ones like user inputs and some
                sync tests to know players are still playing the
                same game. Outside of the shared inputs each user's
                machine simulates the game on it own.<br>
                Using this means that you can do anything with
                Frames for only one user as long the result when
                using that Frame remains the same for all players
                (as long the result affects the warcraft 3 game
                simulation at all). The bare minimum that should be
                the same is the exisitence and the events for a
                Frame.<br>
                Means one could do almost everything in
                GetLocalPlayer for frames (position, size
                visibility, texture, color, text ...), But that is
                playing with fire, when using it wrong many desyns
                will happen by your frames.<br>
                Hence results for this natives are not guarnted to
                be equal for all players:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-function">BlzFrameGetText</span>
<span class="prism-token prism-function">BlzFrameGetTextSizeLimit</span>
<span class="prism-token prism-function">BlzFrameGetEnable</span>
<span class="prism-token prism-function">BlzFrameGetAlpha</span>
<span class="prism-token prism-function">BlzFrameGetValue</span>
<span class="prism-token prism-function">BlzFrameGetHeight</span>
<span class="prism-token prism-function">BlzFrameGetWidth</span>
<span class="prism-token prism-function">BlzFrameGetParent</span>
<span class="prism-token prism-function">BlzFrameIsVisible</span></code></pre>
                    </div>
                </div><br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Frames and HandleId
                    </h3>
                </span>When an Frame enters the map's script, it
                takes a handleId. This should not happen in a
                GetLocalPlayer block. This applies to all of them
                BlzCreateFrame, BlzCreateFrameByType,
                BlzCreateSimpleFrame, BlzGetOriginFrame,
                BlzGetFrameByName, BlzFrameGetParent,
                BlzFrameGetChild.<br>
                One can reserve handleIds by just calling the way to
                get the frame. Then afterwards one can get the frame
                with the getter native in a GetLocalPlayer without a
                desync.<br>
                <code class="bbCodeInline">call BlzGetFrameByName("ConsoleUI", 0)</code><br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Input &amp; Current State
                    </h3>
                </span>Frames handling user input won't sync their
                state/displayed data. User input has only an effect
                onto the frame for the player doing that input. When
                a checkbox is displayed and User A clicks it; only
                for User A will the checkbox be in the checked
                state. This also applies to editboxes and sliders.
                Therefore using BlzFrameGetText(Editbox) or
                BlzFrameGetValue(Slider) are likely to produce a
                disconnect, cause their values are meant to be local
                and differ. How one can use this input? <br>
                The answer are FrameEvents inside this events the
                new state/value is shared with all players. When one
                needs that value save it to a variable inside the
                event's Trigger so that all players know it now
                (although they don't display it in their instance of
                that frame). Now use the store value for the wanted
                behaviour that has to happen for all players.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Example
                    </h3>
                </span>How one uses only one Frame displaying
                different thing for different players, without an
                desync happen?<br>
                One way is to seperate the display and the data. The
                data exists for all players but the displayed data
                onto the Frame differs.<br>
                Let's say one has Goldcosts that is saved in an
                array onto playerIndex.<br>
                <br>
                Another way with one frame is to have all data
                localy and as soon something happens that would
                alter the game simulation from this point, one
                starts an shared Event with all the needed data.
                BlzSendSyncData could be a possible candidat for
                that. This requires a good understanding and care
                what does alter the game also how to dump down
                everything to a small sync message. This is playing
                with Fire and requires to know what will alter the
                game simulation.<br>
                <br>
                Instead of using only one Frame, one could create
                one Frame for each player. This requires the least
                usage of GetLocalPlayer and knowlage. But more
                Frames and Events. Everyone sees only the own Frame
                but still does all the actions the others do.
                CreateContext is here a great help, if one does not
                want to create Frame-Variables.<br>
                <br>
                Let's visualy the differnt techiques on a example.
                When an player selects an unit an iconButton will
                display the icon of the selected Unit and when the
                Button is clicked an Unit of this Type is create for
                the clicking Player. The button should work for all
                players at the same time.<br>
                The example will not comment the frame creation, if
                you have problems with that you might look into <a href="javascript:;"
                    data-hash="FrameExampleIconButtonNoFDF">Icon
                    Button</a>. This example might place some
                version in a bad light, but each has quite some
                advantage.<br>



                <div class="bbcode-tabs" data-xf-init="tabs-tag">
                    <div class="titles">

                        <h3 data-id="0" class="active">One Frame
                        </h3>

                        <h3 data-id="1" class="">Local only share
                            when required</h3>

                        <h3 data-id="2" class="">One for every
                            Player</h3>

                    </div>
                    <div class="bodies">

                        <div data-id="0" class="active"><br>
                            1.Version: One Frame with Data known to
                            anyone.<br>












                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Lua:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                                        data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- Give Vision</span>
<span class="prism-token prism-function">FogMaskEnable</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">FogEnable</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">EnableWorldFogBoundary</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScoreScreenTabButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonIconFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButtonIcon"</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- setup the selection data sharing</span>
<span class="prism-token prism-keyword">local</span> selectedUnitType <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">__jarray</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> selectionTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerRegisterAnyUnitEventBJ</span><span class="prism-token prism-punctuation">(</span>selectionTrigger<span class="prism-token prism-punctuation">,</span> EVENT_PLAYER_UNIT_SELECTED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>selectionTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- get the unitTypeId from the selected Unit</span>
<span class="prism-token prism-keyword">local</span> unitCode <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">GetUnitTypeId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetTriggerUnit</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- save it onto the active player, all players do that.</span>
selectedUnitType<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitCode
<span class="prism-token prism-comment">-- update the displayed Texture for the button this only happens for the active player</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitCode<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- the button clicking</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> player <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">CreateUnit</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">,</span> selectedUnitType<span class="prism-token prism-punctuation">[</span>player<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetPlayerStartLocationX</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetPlayerStartLocationY</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                                </div>
                            </div>
                        </div>

                        <div data-id="1" class=""><br>
                            2.Version all data is localy on click
                            share it. This Version is actually quite
                            bad for the used example, because all
                            data and events are synced on
                            default.<br>
                            <br>












                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Lua:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                                        data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>    <span class="prism-token prism-comment">-- Give Vision</span>
<span class="prism-token prism-function">FogMaskEnable</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">FogEnable</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">EnableWorldFogBoundary</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScoreScreenTabButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonIconFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButtonIcon"</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- setup the selection trigger</span>
<span class="prism-token prism-keyword">local</span> selectedUnitType <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span>
<span class="prism-token prism-keyword">local</span> selectionTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerRegisterAnyUnitEventBJ</span><span class="prism-token prism-punctuation">(</span>selectionTrigger<span class="prism-token prism-punctuation">,</span> EVENT_PLAYER_UNIT_SELECTED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>selectionTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- do only something for the active player</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-comment">-- get the unitTypeId from the selected Unit</span>
<span class="prism-token prism-keyword">local</span> unitCode <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">GetUnitTypeId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetTriggerUnit</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- save it onto the active player, all players do that.</span>
selectedUnitType <span class="prism-token prism-operator">=</span> unitCode
<span class="prism-token prism-comment">-- update the displayed Texture for the button</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitCode<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- the button clicking</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzSendSyncData</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CreateUnitByButton"</span><span class="prism-token prism-punctuation">,</span> selectedUnitType<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> syncTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">for</span> int <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> bj_MAX_PLAYERS <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span> <span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-function">BlzTriggerRegisterPlayerSyncEvent</span><span class="prism-token prism-punctuation">(</span>syncTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">Player</span><span class="prism-token prism-punctuation">(</span>int<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"CreateUnitByButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>syncTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> player <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">CreateUnit</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetTriggerSyncData</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetPlayerStartLocationX</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetPlayerStartLocationY</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>        
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                                </div>
                            </div><br>
                        </div>

                        <div data-id="2" class=""><br>
                            3. Version each player has an own Frame
                            all Frames are created and update for
                            all players: It uses GetLocalPlayer()
                            only once, right after the creation.<br>












                            <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                                <div class="bbCodeBlock-title">
                                    Lua:
                                </div>
                                <div class="bbCodeBlock-content" dir="ltr">
                                    <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                                        data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>    <span class="prism-token prism-comment">-- Give Vision</span>

<span class="prism-token prism-comment">-- Give Vision</span>
<span class="prism-token prism-function">FogMaskEnable</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">FogEnable</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">EnableWorldFogBoundary</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> buttonTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- create one button for each player</span>
<span class="prism-token prism-keyword">for</span> int <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> bj_MAX_PLAYERS <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span> <span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BUTTON"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ScoreScreenTabButtonTemplate"</span><span class="prism-token prism-punctuation">,</span> int<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> buttonIconFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BACKDROP"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"MyIconButtonIcon"</span><span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> int<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">Player</span><span class="prism-token prism-punctuation">(</span>int<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAllPoints</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>      
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-comment">-- setup the selection data sharing</span>
<span class="prism-token prism-keyword">local</span> selectedUnitType <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">__jarray</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> selectionTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerRegisterAnyUnitEventBJ</span><span class="prism-token prism-punctuation">(</span>selectionTrigger<span class="prism-token prism-punctuation">,</span> EVENT_PLAYER_UNIT_SELECTED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>selectionTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> player <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- get the unitTypeId from the selected Unit</span>
<span class="prism-token prism-keyword">local</span> unitCode <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">GetUnitTypeId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetTriggerUnit</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- save it onto the active player, all players do that.</span>
selectedUnitType<span class="prism-token prism-punctuation">[</span>player<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> unitCode
<span class="prism-token prism-comment">-- update the displayed Texture for the button</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MyIconButtonIcon"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetPlayerId</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetAbilityIcon</span><span class="prism-token prism-punctuation">(</span>unitCode<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>buttonTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> player <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">CreateUnit</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">,</span> selectedUnitType<span class="prism-token prism-punctuation">[</span>player<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetPlayerStartLocationX</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetPlayerStartLocationY</span><span class="prism-token prism-punctuation">(</span>player<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                                </div>
                            </div>
                        </div>

                    </div>
                </div><br>
                <a id="FrameSaveAndLoad"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Frame Save &amp; Load
                    </h2>
                </span>Sadly there exists a dangerous Bug with
                Frames in Warcraft 3 which can crash the game. This
                bug can happen when a custom map created Custom
                UI-Frames and The map is Saved &amp; Loaded using
                the warcraft 3 saving. After the Loading all such
                custom created Frames become broken, hideen and
                unuseable. If you use such a broken Frame the game
                can crash. This applies from version 1.31 the first
                version with custom UI upto 1.32.9 PTR (The time I
                wrote this).<br>
                One can workaround the bug, either by disabling
                saving/Loading or by recreating all custom Frames on
                loading. While this sounds difficult to do it is
                quite simple for static frames.<br>
                One basicly only needs to put all the Frame creation
                functions into a array and run that thing again when
                the map is loaded.<br>
                <br>
                This would be such a system that runs to which one
                can register Framecreation functions<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">-- in 1.31 and upto 1.32.9 PTR (when I wrote this). Frames are not correctly saved and loaded, breaking the game.</span>
<span class="prism-token prism-comment">-- This runs all functions added to it with a 0s delay after the game was loaded.</span>
FrameLoader <span class="prism-token prism-operator">=</span> <span class="prism-token prism-punctuation">{</span>
OnLoadTimer <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">function</span> <span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">for</span> _<span class="prism-token prism-punctuation">,</span>v <span class="prism-token prism-keyword">in</span> <span class="prism-token prism-function">ipairs</span><span class="prism-token prism-punctuation">(</span>FrameLoader<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">do</span> <span class="prism-token prism-function">v</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-punctuation">,</span>OnLoadAction <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span>FrameLoader<span class="prism-token prism-punctuation">.</span>Timer<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">,</span> FrameLoader<span class="prism-token prism-punctuation">.</span>OnLoadTimer<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-punctuation">}</span>
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">FrameLoaderAdd</span><span class="prism-token prism-punctuation">(</span>func<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-keyword">not</span> FrameLoader<span class="prism-token prism-punctuation">.</span>Timer <span class="prism-token prism-keyword">then</span>
FrameLoader<span class="prism-token prism-punctuation">.</span>Trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
FrameLoader<span class="prism-token prism-punctuation">.</span>Timer <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerRegisterGameEvent</span><span class="prism-token prism-punctuation">(</span>FrameLoader<span class="prism-token prism-punctuation">.</span>Trigger<span class="prism-token prism-punctuation">,</span> EVENT_GAME_LOADED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>FrameLoader<span class="prism-token prism-punctuation">.</span>Trigger<span class="prism-token prism-punctuation">,</span> FrameLoader<span class="prism-token prism-punctuation">.</span>OnLoadAction<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
table<span class="prism-token prism-punctuation">.</span><span class="prism-token prism-function">insert</span><span class="prism-token prism-punctuation">(</span>FrameLoader<span class="prism-token prism-punctuation">,</span> func<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>And a example that uses it.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-comment">-- HideMinDamageV3</span>
<span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> realFunction <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">local</span> timer<span class="prism-token prism-punctuation">,</span> damageA<span class="prism-token prism-punctuation">,</span> damageB<span class="prism-token prism-punctuation">,</span> parentA<span class="prism-token prism-punctuation">,</span> parentB<span class="prism-token prism-punctuation">,</span> damageA2<span class="prism-token prism-punctuation">,</span> damageB2<span class="prism-token prism-punctuation">,</span> text<span class="prism-token prism-punctuation">,</span> index
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">update</span><span class="prism-token prism-punctuation">(</span>sourceFrame<span class="prism-token prism-punctuation">,</span> targetFrame<span class="prism-token prism-punctuation">)</span>
text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>sourceFrame<span class="prism-token prism-punctuation">)</span>
index <span class="prism-token prism-operator">=</span> string<span class="prism-token prism-punctuation">.</span><span class="prism-token prism-function">find</span><span class="prism-token prism-punctuation">(</span>text<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">" - "</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>targetFrame<span class="prism-token prism-punctuation">,</span> string<span class="prism-token prism-punctuation">.</span><span class="prism-token prism-function">sub</span><span class="prism-token prism-punctuation">(</span> text<span class="prism-token prism-punctuation">,</span> index <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">Init</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\HideMinDamage.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-keyword">not</span> timer <span class="prism-token prism-keyword">then</span> timer <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">end</span>
damageA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
damageB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
parentA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelIconDamage"</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
parentB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelIconDamage"</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageString"</span><span class="prism-token prism-punctuation">,</span> parentA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
damageA2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageStringValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageString"</span><span class="prism-token prism-punctuation">,</span> parentB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
damageB2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageStringValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetFont</span><span class="prism-token prism-punctuation">(</span>damageA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetFont</span><span class="prism-token prism-punctuation">(</span>damageB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span>timer<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzFrameIsVisible</span><span class="prism-token prism-punctuation">(</span>parentA<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">update</span><span class="prism-token prism-punctuation">(</span>damageA<span class="prism-token prism-punctuation">,</span> damageA2<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzFrameIsVisible</span><span class="prism-token prism-punctuation">(</span>parentB<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">update</span><span class="prism-token prism-punctuation">(</span>damageB<span class="prism-token prism-punctuation">,</span> damageB2<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">realFunction</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
realFunction <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">nil</span>

<span class="prism-token prism-function">Init</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> FrameLoaderAdd <span class="prism-token prism-keyword">then</span> <span class="prism-token prism-function">FrameLoaderAdd</span><span class="prism-token prism-punctuation">(</span>Init<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">library</span> HideMinDamageText <span class="prism-token prism-keyword">initializer</span> init_function <span class="prism-token prism-keyword">requires</span> FrameLoader
<span class="prism-token prism-comment">// HideMinDamageV3</span>
<span class="prism-token prism-keyword">globals</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">framehandle</span> DamageA
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">framehandle</span> DamageB
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">framehandle</span> DamageA2
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">framehandle</span> DamageB2
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">framehandle</span> ParentA
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">framehandle</span> ParentB
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">string</span> Text
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">integer</span> Index
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">integer</span> LoopA
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">integer</span> LoopAEnd
<span class="prism-token prism-keyword">endglobals</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-keyword">function</span> find <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">set</span> LoopAEnd <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">StringLength</span><span class="prism-token prism-punctuation">(</span>Text<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">set</span> LoopA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">loop</span>
<span class="prism-token prism-keyword">exitwhen</span> LoopA <span class="prism-token prism-operator">&gt;=</span> LoopAEnd
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">SubString</span><span class="prism-token prism-punctuation">(</span>Text<span class="prism-token prism-punctuation">,</span> LoopA<span class="prism-token prism-punctuation">,</span> LoopA <span class="prism-token prism-operator">+</span><span class="prism-token prism-number">3</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-string">" - "</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-keyword">set</span> Index <span class="prism-token prism-operator">=</span> LoopA <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">3</span>
<span class="prism-token prism-keyword">return</span>
<span class="prism-token prism-keyword">endif</span>
<span class="prism-token prism-keyword">set</span> LoopA <span class="prism-token prism-operator">=</span> LoopA <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">endloop</span>
<span class="prism-token prism-keyword">set</span> Index <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span>
<span class="prism-token prism-keyword">endfunction</span>

<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-keyword">function</span> update <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzFrameIsVisible</span><span class="prism-token prism-punctuation">(</span>ParentA<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-keyword">set</span> Text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>DamageA<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> find<span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>DamageA2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">SubString</span><span class="prism-token prism-punctuation">(</span>Text<span class="prism-token prism-punctuation">,</span> Index<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">StringLength</span><span class="prism-token prism-punctuation">(</span>Text<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endif</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzFrameIsVisible</span><span class="prism-token prism-punctuation">(</span>ParentB<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-keyword">set</span> Text <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span>DamageB<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> find<span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>DamageB2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">SubString</span><span class="prism-token prism-punctuation">(</span>Text<span class="prism-token prism-punctuation">,</span> Index<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">StringLength</span><span class="prism-token prism-punctuation">(</span>Text<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endif</span>
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-keyword">function</span> At0s <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\HideMinDamage.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> ParentA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelIconDamage"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> ParentB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"SimpleInfoPanelIconDamage"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> DamageA <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> DamageB <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"InfoPanelIconValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageString"</span><span class="prism-token prism-punctuation">,</span> ParentA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> DamageA2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageStringValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageString"</span><span class="prism-token prism-punctuation">,</span> ParentB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> DamageB2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomDamageStringValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetFont</span><span class="prism-token prism-punctuation">(</span>DamageA<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetFont</span><span class="prism-token prism-punctuation">(</span>DamageB<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetExpiredTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.05</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">true</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span> update<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-keyword">function</span> init_function <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> FrameLoaderAdd<span class="prism-token prism-punctuation">(</span><span class="prism-token prism-keyword">function</span> At0s<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span> At0s<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-keyword">endlibrary</span></code></pre>
                    </div>
                </div>











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">library</span> FrameLoader <span class="prism-token prism-keyword">initializer</span> init_function
<span class="prism-token prism-comment">// in 1.31 and upto 1.32.9 PTR (when I wrote this). Frames are not correctly saved and loaded, breaking the game.</span>
<span class="prism-token prism-comment">// This library runs all functions added to it with a 0s delay after the game was loaded.</span>
<span class="prism-token prism-comment">// function FrameLoaderAdd takes code func returns nothing</span>
<span class="prism-token prism-comment">// func runs when the game is loaded.</span>
<span class="prism-token prism-keyword">globals</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">trigger</span> eventTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">trigger</span> actionTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-class-name">timer</span> t <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endglobals</span>
<span class="prism-token prism-keyword">function</span> FrameLoaderAdd <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">code</span> func <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>actionTrigger<span class="prism-token prism-punctuation">,</span> func<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span>

<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-keyword">function</span> timerAction <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TriggerExecute</span><span class="prism-token prism-punctuation">(</span>actionTrigger<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-keyword">function</span> eventAction <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span>t<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span> timerAction<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-keyword">private</span> <span class="prism-token prism-keyword">function</span> init_function <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TriggerRegisterGameEvent</span><span class="prism-token prism-punctuation">(</span>eventTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">EVENT_GAME_LOADED</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>eventTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span> eventAction<span class="prism-token prism-punctuation">)</span>        
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-keyword">endlibrary</span></code></pre>
                    </div>
                </div><a id="Point_TOC"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        TOC
                    </h2>
                </span>Probably means Table of Content
                (WaterKnight)<br>
                A TOC file is kind of an batch file listing one or
                more fdf. Each line is a path to such a fdf. The
                path is where the game reads the fdf from, it should
                match the path you import them into your map. When
                it is executed one can use/gets the content from the
                listed fdfs.<br>
                <br>
                During the game one loads a TOC-File with <code
                    class="bbCodeInline">native BlzLoadTOCFile takes string TOCFile returns boolean</code>,<code
                    class="bbCodeInline">call BlzLoadTOCFile("war3mapimported\\SomeCustom.toc")</code><br>
                A map can Load any amount of TOC-Files.<br>
                <br>
                The paths inside TOC-File are not case sensitve.<br>
                The order of the fdf inside the TOC matters when one
                loads fdf that includes other fdf that are also
                mentioned and with that loaded in the same TOC-File.
                It is recommented to first list the ones that are
                included in the later ones. (GetLocalPlayer, have to
                test that)<br>
                Reforged only: When 2 TOCs load a Frame with the
                same name the newer one will overwrite the older
                one. That can be used to reload some frames for
                example ConsoleUI or ResourceBarFrame to give
                nameless Textures names, although this TOC-Loading
                has to happen in Config or in the root to update a
                default fdf. Beaware that this also suffers from the
                Save&amp;Load Bug, you custom Toc will not be loaded
                when on Loads the game from the Reforged Menu
                directly, although it works when one starts the map
                and Loads a Saved Game of the same Map (which would
                be single player only currently).<br>
                <br>
                The TOC ends with one or two empty lines depends on
                the end of line sequence used for that file.<br>
                <div style="margin-left: 20px">If it's "CRLF", you
                    need at least 1 empty line.<br>
                    If it's "LF", you need at least 2 empty lines.
                    (GetLocalPlayer)​</div><br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Loading in Templates
                    </h3>
                </span>The templates are not Loaded in on default.
                Therefore let's load them into the game so we can
                directly create them.<br>
                First create a file named Templates.TOC<br>
                The content of the file should be that, care for the
                empty ending line.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>UI\FrameDef\Glue\standardtemplates.fdf
UI\FrameDef\UI\escmenutemplates.fdf
UI\FrameDef\Glue\battlenettemplates.fdf</code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="templates-toc-jpg.324419"
                    data-src="https://www.hiveworkshop.com/attachments/templates-toc-jpg.324419/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1">
                    <img src="./index_files/Templates.toc.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/templates-toc-jpg.324419/" class="bbImage"
                        data-zoom-target="1" style="" alt="templates-toc-jpg.324419" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>













                <div class="bbImageWrapper  js-lbImage" title="toc-empty-line-jpg.367753"
                    data-src="https://www.hiveworkshop.com/attachments/toc-empty-line-jpg.367753/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;toc-empty-line-jpg.367753&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Toc empty Line.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/toc-empty-line-jpg.367753/" class="bbImage"
                        data-zoom-target="1" style="" alt="toc-empty-line-jpg.367753" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                <br>
                After "Templates.toc" was created and saved import
                the toc-file into your map, keep the path as it
                is.<br>













                <div class="bbImageWrapper  js-lbImage" title="templates-imported-jpg.348510"
                    data-src="https://www.hiveworkshop.com/attachments/templates-imported-jpg.348510/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;templates-imported-jpg.348510&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Templates Imported.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/templates-imported-jpg.348510/"
                        class="bbImage" data-zoom-target="1" style="" alt="templates-imported-jpg.348510" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                Now load it in your code so you can create frames
                mentioned in standardtemplates.fdf and
                escmenutemplates.fdf and battlenettemplates.fdf.<br>
                <code class="bbCodeInline">BlzLoadTOCFile("war3mapImported\\Templates.toc")</code><br>
                <br>
                <a id="Point_FDF"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        FDF
                    </h2>
                </span>A <b>F</b>rame <b>D</b>efinition <b>F</b>ile
                is a fileType used in warcraft 3 to define an
                UI-Frame. Fdf has a second use case, they can define
                StringLists with such a StringList one can set
                Localized Strings.<br>
                <br>
                Blizzard's fdf are found in the casc at this
                places:<br>
                ui/framedef/ui/<br>
                ui/framedef/glue/<br>
                _locales/dede.w3mod:ui/framedef<br>
                <br>
                The ones in _locals contain localized Strings for
                that language. In the mpq version they are not an
                own "folder" but in a Local.mpq.<br>
                Glue have frame blueprints for the old game menu
                before Warcraft 3 V1.32.<br>
                UI contains frame blueprints that matter during a
                match.<br>
                <br>
                Inside fdf one can write Text which is ignored by
                the fdf parser. There are Line comments and area
                commentents.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>// I am a Line comment

/* Opens the Area Comment
*
*
*/ End the Area Comment</code></pre>
                    </div>
                </div><br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        The Fdf syntax
                    </h3>
                </span>There exists something like 105 fdf-actions
                each of this actions is followed by an group of
                arguments which are either seperated by whitespace
                or by comma + optional whitespace. Between the first
                argument and the Action is whitespace. The used rule
                of seperation depends on the Action. Some
                FDF-Actions have multiple Versions with different
                amount of arguments.<br>
                An example for each:<br>
                <div style="margin-left: 20px">FontColor 0.99 0.827
                    0.0705 1.0,<br>
                    FrameFont "EscMenuTextFont", 0.010, "",​</div>
                <br>
                Actions not opening a Block { } end with a comma.
                Only the Actions: <b>Frame</b>, <b>String</b>,
                <b>Texture</b>, <b>Layer</b> and <b>StringList</b>
                open Blocks. All of them except for Layer can exist
                outside of Blocks. IncludeFile and StringList are
                Actions only written outside of Blocks. Other
                fdf-Actions have to be in a Block. Actions in a
                Block belong to the Action that started the Block
                most times defining a Frame. One Line can contain
                multiple Actions in a row without any Line
                seperator.<br>
                <br>
                I personaly call Frames defined outside of Blocks
                MainFrame, when I talk about them. Only such
                MainFrames can be Created &amp; Inherited. Frames
                can have any amount of Child-Frames which also can
                have Child-Frames, but each Frame has only one
                Parent.<br>
                Fdf Frames support a behaviour called INHERITS in
                which a Frame copys the Fdf Actions from another
                Frame. There also exists an advanced version
                INHERITS WITHCHILDREN, this also copies the
                Child-Frames and uses their fdf-Actions. In fdf the
                Frame one wants to inherit from has to be from the
                same fdf or from an included one.<br>
                For the Fdf-Action Frame: The names of MainFrames in
                one fdf have to be unique. If another MainFrame with
                the same name in the current fdf is encountered the
                remaining File-content is skiped. ChildFrames can
                have the same name as their brothers, their parent
                or be empty "".<br>
                <br>
                Each Frame uses one of the Warcraft 3 FrameTypes,
                with the FrameType the behaviour and the set of
                possible fdf-Actions for that Frame is choosen. This
                FrameTypes can be placed into 2 groups SimpleFrames
                (all of them start with SIMPLE) and the others which
                I just call Frames (a bit confusing, cause all are
                Frames). One should do this seperation cause they
                have different features, techniques, rules and it is
                difficult to fit them together (logical not
                visual).<br>
                <br>
                In fdf paths are written only with one "\".<br>
                <br>
                The upto date version of Warcraft 3 tells you about
                syntax errors of custom fdf. When they are loaded
                over a toc file in your map. To inspect such a error
                log run your map with the fdf and toc then close the
                game and check Users\User\Documents\Warcraft
                III\Logs\War3Log.txt.<br>
                Such an Fdf-error line in that Log-file could look
                like that:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block"
                            data-lang=""><code>11/8 15:44:54.356  Error (war3mapImported\Test.fdf:4): Expected ",", but found "Height"</code></pre>
                    </div>
                </div>Sadly it seems to only tell you about the
                first encountered error and won't tell you about any
                error if a toc does not have that needed empty
                ending line.<br>













                <div class="bbImageWrapper  js-lbImage" title="toc-empty-line-jpg.367753"
                    data-src="https://www.hiveworkshop.com/attachments/toc-empty-line-jpg.367753/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;toc-empty-line-jpg.367753&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Toc empty Line.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/toc-empty-line-jpg.367753/" class="bbImage"
                        data-zoom-target="1" style="" alt="toc-empty-line-jpg.367753" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                The fdf structure often looks like that. For
                simplity Actions that are not: Frame, IncludeFile
                and StringList. Are replaced with placeholders
                .....<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI\FrameDef\UI\EscMenuTemplates.fdf",

Frame "BUTTON" "ButtonTemplate" {
....
....
}

// 
Frame "BUTTON" "FrameNameA" INHERITS WITHCHILDREN "ButtonTemplate" {
....
....
....
Frame "BACKDROP" "FrameNameB" {
....
....
....
Frame "TEXT" "FrameNameC" INHERITS "EscMenuLabelTextSmallTemplate" {
}
}
}


StringList {
MYLABEL "My Label Text",
MYVALUE "My Value Text",
MYNAME "My Name Text",
MyMultLineText "Line 1
Line 2
Line 3
Line 4
Line 5",
}</code></pre>
                    </div>
                </div>Strings in a StringList don't need to be one
                lined. They also can go over multiple lines like
                MyMultLineText.<br>
                <br>
                This fdf-content would define 4 Frames and 4
                Localized Strings(MYLABEL, MYVALUE, MYNAME and
                MyMultLineText).<br>
                The Frames are:<br>
                <div style="margin-left: 20px">"ButtonTemplate"
                    (BUTTON)<br>
                    "FrameNameA" (BUTTON) (copies fdf-Actions from
                    "ButtonTemplate")<br>
                    "FrameNameB" (BACKDROP) (Child of
                    "FrameNameA")<br>
                    "FrameNameC" (TEXT) (Child of "FrameNameB")
                    (copies EscMenuLabelTextSmallTemplate which is
                    included from
                    "UI\FrameDef\UI\EscMenuTemplates.fdf")​</div>
                <br>
                Of this 4 Frames only 2 can be created/Inherited,
                the MainFrames "ButtonTemplate" and "FrameNameA".
                One can not create "FrameNameB" nor "FrameNameC"
                directly. They will be created as sideeffect when
                one creates the MainFrame being their Ancestor.<br>
                <br>
                If one writes a misstake in a fdf the remaining text
                of the current file is skiped, the Frame in which
                the misstake happened will still be created to this
                point.<br>
                <br>
                <a id="FDFAction"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        FDF-Actions
                    </h2>
                </span><br>
                This FdfActions are used quite often hence, they got
                a List for themself. The remaining Belong to
                specific Types and mentioned in their Frametypes (if
                they it is mentioned).<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> Frame
Format1: Frame "FRAMETYPE" "FrameName" {
Format2: Frame "FRAMETYPE" "FrameName" INHERITS "FrameNameInherited" {
Format3: Frame "FRAMETYPE" "FrameName" INHERITS WITHCHILDREN "FrameNameInherited" {
Purpose: Define a new Frame of "FRAMETYPE" with "FrameName", in Foramt2 it will clone most fdf Actions from the inherited Frame. WithChildren will also clone fdfActions for child-Frames. The FrameName can be empty "", but it has to be there.

Width
Format1: Width 0.2,
Format2: Width 0.0153f,
Purpose: Initial Width of this Frame.

Height
Format1: Height 0.1,
Format2: Height 0.0134f,
Purpose: Initial Height of this Frame.

ControlBackdrop
Format: ControlBackdrop "FrameName",
Purpose: Define a Functional BACKDROP Child-Frame for the enabled State, used in Frames of the Frame Group except for BACKDROP, TEXT, SPRITE, MODEL, DIALOG and FRAME. It is common that the functional Child-Frame is defined in the next Line.

ControlDisabledBackdrop
Format: ControlDisabledBackdrop "FrameName",
Purpose: Like ControlBackdrop but for disabled Frames. Can be skiped then ControlBackdrop will also be used in disabled State.

SetPoint
Format: SetPoint OwnPoint, "FrameName", AttachedPoint, xOffset, yOffset,
Purpose: Pos the frame with its own FramePoint to AttachedPoint of FrameName with xOffset and yOffset (+x is right +y is up), When the Frame is created the Frame basicly calls BlzFrameSetPoint(self, FramePoint-Own, BlzGetFrameByName(FrameName, 0), FramePoint-FrameName, x, y).

UseActiveContext
Format: UseActiveContext,
Purpose: Alters the behaviour of SetPoint (in fdf) in the Frame it is used, instead of using BlzGetFrameByName(name, 0) it will call BlzGetFrameByName(name, createContext).

IncludeFile
Format: IncludeFile "FilePath",
Purpose: Frames from the Included Fdf can be inherited in this fdf. Should be used outside of Frames. One can use multiple IncludeFile actions in one fdf.

DecorateFileNames
Format: DecorateFileNames,
Purpose: In this Frame all FdfActions asking for FilePaths will use variableNames instead which are taken from a StringList or some Txt-File like GameInterface.

LayerStyle
Format1: LayerStyle "IGNORETRACKEVENTS", 
Purpose: Does not trigger Frame Mouse events and can't be clicked. TEXT and FRAME might find good usage for this.
Format2: LayerStyle "NOSHADING",
Purpose: WhoKnows  
Format3: LayerStyle "NOSHADING|IGNORETRACKEVENTS", //Both

Texture
Format1: Texture {
Format2: Texture "FrameName" {
Format3: Texture "FrameName" INHERITS "FrameNameInherited" {
Purpose: Defines a Texture-Frame, This is only used for SimpleFrames. An Image. More to that In category SimpleFrames.

String
Format1: String {
Format2: String "FrameName" {
Format3: String "FrameName" INHERITS "FrameNameInherited" {
Purpose: Defines a String-Frame, This is only used for SimpleFrames. A Text. More to that In category SimpleFrames.

Alpha
Format: Alpha 0 to 255,
Purpose: "calls" BlzFrameSetAlpha(this, value), makes the frame "transparent" or more stable

ToolTip
Format: ToolTip FrameName,
Example: ToolTip "CodeTextFrame",
Purpose: When this Frame is created it "calls" BlzFrameSetTooltip(this, BlzGetFrameByName(frameName, createdContext))

DoNotRegisterName
Format: DoNotRegisterName,
Purpose: This Frame is not added into the storage accessed by BlzGetFrameByName</code></pre>
                    </div>
                </div><br>
                <a id="FdfFramePos"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Frame Pos in FDF
                    </h3>
                </span><br>
                When one creates frames in fdf one can also set the
                position of frames. Here one has 2 to 3 options
                based on the current Frame:<br>
                <div style="margin-left: 20px"><b>SetPoint</b>
                    FramePoint-Own, FrameName, FramePoint-FrameName,
                    xOffset , yOffset,<br>
                    <b>SetAllPoints</b>,<br>
                    <b>Anchor</b> FramePoint, x, y, (only
                    Texture/String)​
                </div><b>SetPoint</b> &amp; <b>Anchor</b> use this
                Points in fdf:<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass">TOPLEFT
TOP
TOPRIGHT
LEFT
CENTER
RIGHT
BOTTOMLEFT
BOTTOM
BOTTOMRIGHT</code></pre>
                    </div>
                </div><b>SetPoint</b> can be seen as <code
                    class="bbCodeInline">BlzFrameSetPoint(self, FramePoint-Own, BlzGetFrameByName(FrameName, 0), FramePoint-FrameName, x, y)</code>.
                With UseActiveContext, the Frame will connect to the
                relative Frame with the same CreateContext the
                current Frame is created with.<br>
                This is an example fdf-Frame without
                UseActiveContext. It is not used because the frame
                shall attach itself to ("ConsoleUI", 0) even when
                created with a CreateContext that is not 0. <br>
                That Frame of type BACKDROP with Name Test displays,
                after it's loading &amp; creation, a Paladin-Icon at
                the Top Left of the screen (Would have to be loaded
                over a TOC first).<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "BACKDROP" "Test" {
Width 0.1,
Height 0.1,
SetPoint TOPLEFT, "ConsoleUI", TOPLEFT, 0, 0,
BackdropBackground "ReplaceableTextures\CommandButtons\BTNHeroPaladin",
}</code></pre>
                    </div>
                </div><br>
                <b>SetAllPoints</b> equal to
                BlzFrameSetAllPoints(self, parent).<br>
                <b>Anchor</b> is BlzFrameSetPoint(self, point,
                parent, point, x, y), but Anchor can only be used in
                Texture/String and only once in each.<br>
                Using INHERITS and SetPoint together can be
                difficult to manage.<br>
                The fdf posing uses most rules explained here: <a href="javascript:;"
                    data-hash="PosFrames_Relative">Relative
                    Position</a><br>
                <a id="Frames_Types"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        FrameTypes
                    </h3>
                </span>This are the FrameTypes used in the fdfAction
                Frame, they uppercase only and a expected to be
                inside "".<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>BACKDROP
BASE (TODO)
BUTTON
CHATDISPLAY
CHECKBOX
CONTROL
DIALOG
EDITBOX
FRAME
GLUEBUTTON
GLUECHECKBOX
GLUEEDITBOX
GLUEPOPUPMENU
GLUETEXTBUTTON
HIGHLIGHT
LISTBOX
LISTBOXITEM (TODO)
LISTBUTTON (TODO)
MENU
MESSAGE (TODO)
MODEL
POPUPMENU
RADIOGROUP (TODO)
SCROLL (TODO)
SCROLLBAR
SIMPLEBUTTON
SIMPLECHECKBOX
SIMPLEFRAME
SIMPLEGRID (TODO)
SIMPLEMESSAGEFRAME (TODO)
SIMPLESTATUSBAR
SIMPLETOP (TODO)
SLASHCHATBOX
SLIDER
SPRITE
STATUSBAR
TEXT
TEXTAREA
TEXTBUTTON
TIMERTEXT</code></pre>
                    </div>
                </div>GLUE versions tend to send an audio Feedback
                on click (when created with BlzCreateFrame)<br>
                SLASHCHATBOX, EDITBOX, GLUEEDITBOX are kinda the
                same thing.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Alpha x,
AlphaMode text,
Anchor POINT, x, x,
BackdropBackground text,
BackdropBackgroundInsets x x x x,
BackdropBackgroundSize x,
BackdropBlendAll,
BackdropBottomFile text,
BackdropCornerFlags text,
BackdropCornerSize x,
BackdropEdgeFile text,
BackdropCornerFile text,
BackdropHalfSides,
BackdropLeftFile text,
BackdropMirrored,
BackdropRightFile text,
BackdropTileBackground,
BackdropTopFile text,
BackgroundArt text,
BarTexture text,
ButtonPushedTextOffset x x,
ButtonText text,
ChatDisplayBorderSize x,
ChatDisplayEditBox FrameName,
ChatDisplayLineHeight x,
ChatDisplayScrollBar FrameName,
CheckBoxCheckHighlight text,
CheckBoxDisabledCheckHighlight text,
Checked,
CheckedTexture text,
ControlBackdrop FrameName,
ControlDisabledBackdrop FrameName,
ControlDisabledPushedBackdrop FrameName,
ControlFocusHighlight text,
ControlMouseOverHighlight text,
ControlPushedBackdrop text,
ControlShortcutKey text,
ControlStyle text,
CursorSprite model,
DecorateFileNames,
DialogBackdrop FrameName,
DialogOkButton FrameName,
DialogCancelButton FrameName,
DisabledText text text,
DisabledTexture text,
DoNotRegisterName,
EditBorderSize x,
EditCursorColor x x x x,
EditHighlightColor red green blue alpha,
EditHighlightInitial,
EditMaxChars int,
EditSetFocus,
EditText text,
EditTextColor red green blue alpha,
EditTextFrame frameName,
EditTextOffset x y,
File text,
Font text, x,
FontColor x x x (x),
FontDisabledColor x x x (x),
FontFlags text,
FontHighlightColor x x x (x),
FontJustificationH JUSTIFYH,
FontJustificationV JUSTIFYV,
FontJustificationOffset x x,
FontShadowColor x x x (x),
FontShadowOffset x x,
Frame text text INHERITS WITHCHILDREN text {
FrameFont text, x, text,
Height x,
HighlightAlphaFile text,
HighlightAlphaMode text,
HighlightColor x x x (x),
HighlightText text text,
HighlightType text,
IncludeFile text,
ID int,
LayerStyle text,
ListBoxItem frameName,
ListBoxItemHeight x,
ListBoxBorder x,
ListBoxScrollBar FrameName,
ListBoxStyle flagString,
MenuBorder x,
MenuItem text, x,
MenuItemHeight x,
MenuTextHighlightColor x x x (x),
NormalText text text,
NormalTexture text,
PopupArrowFrame FrameName,
PopupButtonInset x,
PopupMenuFrame FrameName,
PopupTitleFrame FrameName,
PushedTexture text,
ScrollBarDecButtonFrame FrameName,
ScrollBarIncButtonFrame FrameName,
SetAllPoints,
SetPoint POINT, FrameName, POINT, x, x,
SliderInitialValue x,
SliderInitialValue x,
SliderLayoutHorizontal,
SliderLayoutVertical,
SliderMaxValue x,
SliderMinValue x,
SliderStepSize x,
SliderThumbButtonFrame FrameName,
SpriteCamera int,
SpriteScale x x x,
StatusBarSprite model,
TabFocusDefault,
TabFocusNext FrameName,
TabFocusPush,
TexCoord x, x, x, x,
Text text,
TextAreaInset x,
TextAreaLineGap x,
TextAreaLineHeight x,
TextAreaMaxLines x,
TextAreaScrollBar FrameName,
TextLength x,
ToolTip FrameName,
UseActiveContext,
UseHighlight text,
Width x,
Frame text text (INHERITS) (WITHCHILDREN) (text)
String (text) (INHERITS) (text)
Texture (text) (INHERITS) (text)
Layer (text)
StringList</code></pre>
                    </div>
                </div><br>
                <a id="Frames_Backdrop"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        BACKDROP
                    </h2>
                </span>Backdrops manage the visual textures of the
                Frame group, they are borders, backgrounds or images
                (for non simple frames). Most frames beeing more
                than simple text have functional child-Frames of
                Type backdrop that manage the textures beeing
                shown.<br>
                The most common functional Backdrop are:<br>
                <ul>
                    <li data-xf-list-type="ul"><code class="bbCodeInline">ControlBackdrop &lt;name&gt;,</code>
                        <ul>
                            <li data-xf-list-type="ul">&lt;name&gt;
                                is the name of the frame beeing
                                used, it also is most time declared
                                right below the control line. This
                                backdrop is used when the
                                parentFrame is enabled and basicly
                                every Frame has such a thing.</li>
                        </ul>
                    </li>
                    <li data-xf-list-type="ul"><code class="bbCodeInline">ControlDisabledBackdrop &lt;name&gt;,</code>
                        <ul>
                            <li data-xf-list-type="ul">backdrop when
                                the parentFrame is disabled.</li>
                        </ul>
                    </li>
                </ul><br>
                The BackDrop FDF-Actions:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> BackdropBackground
Format: BackdropBackground filepath,
Purpose: Defines the background/main texture.

BackdropBackgroundInsets
Format: BackdropBackgroundInsets real real real real,
Format: BackdropBackgroundInsets Right TOP Bottom Left,
Example: BackdropBackgroundInsets 0.004 0.004 0.004 0.004, 
Purpose: With Positive Numbers BackdropBackground will in smaller area then the BACKDROP takes. -Numbers allow to extend a Side. Survives Texture swaping by Code.

BackdropBackgroundSize
Format: BackdropBackgroundSize real,
Example: BackdropBackgroundSize 0.032,
Purpose: in Tile mode, the size of each tile

BackdropBlendAll
Format: BackdropBlendAll,
Purpose: Allows to see the stuff below the Frame. Maybe:(Use transparency by alpha channels. An image with alpha channel transparency but without this, will be displayed wrong. 

BackdropBottomFile
Format: BackdropBottomFile FilePath, 
Example: BackdropBottomFile "UI\Widgets\ButtonBottom.blp",
Purpose: Sets the Texture for the bottom part of the Border

BackdropCornerFile
Format: BackdropCornerFile FilePath,
Example: BackdropCornerFile "UI\Widgets\ButtonCorners.blp",
Purpose:

BackdropCornerFlags
Format: BackdropCornerFlags Text, 
Example: BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R", //Whole Border
Example: BackdropCornerFlags "UL|UR|T|L|R", //No Bottom Border
Purpose: Edge/BorderFiles displayed, one can skip some and order does not matter. Using this without seting border files will crash the game when this Backdrop is displayed.

BackdropCornerSize
Format: BackdropCornerSize real,
Example: BackdropCornerSize 0.048,
Purpose: Size of the border/edge.

BackdropEdgeFile
Format: BackdropEdgeFile FilePath, 
Example: BackdropEdgeFile "UI\Widgets\BattleNet\bnet-inputbox-border.blp",
Purpose: Set the BorderFile for that BACKDROP, this file contains all Parts of the Border as fragments next to each other.

BackdropHalfSides
Format: BackdropHalfSides,
Purpose: WhoKnows

BackdropLeftFile
Format: BackdropLeftFile FilePath,
Example: BackdropLeftFile "UI\Widgets\ButtonLeft.blp",
Purpose: Left part of the Border

BackdropMirrored
Format: BackdropMirrored,
Purpose: Mirror the displayed BackdropBackground. Left and Right &lt;-&gt;. Survives Texture swaping by Code.

BackdropRightFile
Format: BackdropRightFile FilePath,
Example: BackdropRightFile "UI\Widgets\ButtonRight.blp",
Purpose: Right part of the Border

Format: BackdropTileBackground,
Example: BackdropTileBackground,
Purpose: Fills the Frame with instances of the texture. Without the background file is stretched. One also should set BackdropBackgroundSize when using this feature. Can be used in BlzFrameSetTexture(frame, file, 1, blend).

BackdropTopFile
Format: BackdropTopFile FilePath,
Example: BackdropTopFile "UI\Widgets\ButtonTop.blp", 
Purpose: Top part of the Border</code></pre>
                    </div>
                </div><br>
                Example from
                "UI/FrameDef/UI/EscMenuTemplates.fdf"<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "BACKDROP" "EscMenuControlBackdropTemplate" {
DecorateFileNames,
BackdropTileBackground,
BackdropBackground  "EscMenuEditBoxBackground",
BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
BackdropCornerSize  0.0125,
BackdropBackgroundSize  0.256,
BackdropBackgroundInsets 0.005 0.005 0.005 0.005,
BackdropEdgeFile  "EscMenuEditBoxBorder",
BackdropBlendAll,
}</code></pre>
                    </div>
                </div>Custom Example<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "BACKDROP" "FootManIcon" {
Width 0.1,
Height 0.1,
SetPoint CENTER, "ConsoleUI", CENTER, 0, 0,
BackdropBackground "ReplaceableTextures\CommandButtons\BTNFootman",
}</code></pre>
                    </div>
                </div><br>
                Using BlzFrameSetTexture will drop the
                BackdropEdgeFile settings.<br>
                <br>
                <a id="Frames_TextButton"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Button
                    </h2>
                </span>Buttons are powerful and useful UI-Frames. A
                Button in Warcraft 3 is only a space on the screen
                that can be pressed. The pressing can send an audio
                Feedback (GLUE created with BlzCreateFrame) and one
                can catch the pressing with a TriggerEvent which
                allows executing Code. But if the button is only the
                clickable space where does the displayed Image, the
                Text and the Highlight come from?<br>
                <br>
                Each is an own functional child-Frame, doing one
                job. They mimic size and Position of the parent
                Frame. There is a BACKDROP that is shown when the
                BUTTON is enabled, another is shown, when pressed,
                when the BUTTON is disabled and so on, each such is
                an own ChildFrame....<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Example
                    </h3>
                </span>Here is an Image of the text inside a fdf of
                a GLUETEXTBUTTON containg most, when not all strong
                connected childFrames. In the Image: text that is
                connected to Childframes is in a colored box. Also
                there are some comments right to the Frames in
                different color.<br>
                <br>













                <div class="bbImageWrapper  js-lbImage" title="gluetextbutton-darkmode-marked-3-jpg.332429"
                    data-src="https://www.hiveworkshop.com/attachments/gluetextbutton-darkmode-marked-3-jpg.332429/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;gluetextbutton-darkmode-marked-3-jpg.332429&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/GlueTextButton DarkMode marked 3.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/gluetextbutton-darkmode-marked-3-jpg.332429/"
                        class="bbImage" data-zoom-target="1" style="" alt="gluetextbutton-darkmode-marked-3-jpg.332429"
                        title="" width="" height="" loading="lazy">
                </div>

                <br>
                <br>
                <br>
                The TEXT-ChildFrame is not needed to set the text of
                the TEXTBUTTON by Code, but it is needed to style it
                in the fdf.<br>
                The highlighter does only work when ControlStyle
                mentions that behaviour.<br>
                A (GLUE)BUTTON is basicly the same without the
                ButtonText feature/child-Frame.<br>
                <br>
                <span style="color: orange">
                    <h3 style="margin: 0">
                        Unneeded ChildFrames
                    </h3>
                </span>Child-Frames that you do not need can often
                be skiped.<br>
                Therefore this is still a valid GLUEBUTTON: even
                with only mentioning ControlBackdrop,
                ControlDisabledBackdrop and
                ControlMouseOverHighlight.<br>
                Means a texture in enabled state, a texture for
                disabled state and a glowing for mouse hovering.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "GLUEBUTTON" "HeroSelectorButton" {
Width 0.035,
Height 0.035,
ControlStyle "AUTOTRACK|HIGHLIGHTONMOUSEOVER",

ControlBackdrop "HeroSelectorButtonIcon",
Frame "BACKDROP" "HeroSelectorButtonIcon" {
}

ControlDisabledBackdrop "HeroSelectorButtonIconDisabled",
Frame "BACKDROP" "HeroSelectorButtonIconDisabled" {
}

ControlMouseOverHighlight "HeroSelectorButtonHighLight",
Frame "HIGHLIGHT" "HeroSelectorButtonHighLight" {
HighlightType "FILETEXTURE",
HighlightAlphaFile "UI\Glues\ScoreScreen\scorescreen-tab-hilight.blp",
HighlightAlphaMode "ADD",
}
}</code></pre>
                    </div>
                </div>How one would create this
                "HeroSelectorButton". One can't cause it is not
                loaded.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-comment">//Create "HeroSelectorButton", for game UI</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> buttonFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"HeroSelectorButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_GAME_UI</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">//By Having created "HeroSelectorButton" also its children are created, this children are accessed using BlzGetFrameByName right after the creation or later one if the slots were not taken by other frames.</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> buttonIconFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"HeroSelectorButtonIcon"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">//Set a Texture</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>buttonIconFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">true</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><br>
                <br>
                <a id="Frames_ButtonHotkey"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        Hotkeys in fdf
                    </h3>
                </span>(GLUE)(TEXT)BUTTONs can have set Hotkeys
                right in the fdf. This is done by giving the Button
                a Parent Frame that has the fdfAction <code class="bbCodeInline">TabFocusPush,</code> aswell
                as creating a StringList with the wanted Hotkeys.
                Then one creates Buttons as child of the Frame with
                <code class="bbCodeInline">TabFocusPush,</code> and
                setups <code class="bbCodeInline">ControlShortcutKey "StringName in StringList",</code>.
                This hotkeys will consider the current active main
                input Frame, when created for GAMEUI they will stop
                listen when the player is in a Menu or types in chat
                messages.<br>
                For some wierd reason the Hotkeys don't work out of
                the Box (when created for GAMEUI), first one has to
                hide and show the Parent Frame. Then the hotkeys
                will listen and start events when clicked. The
                hotkeys will fire a control-click Event which does
                not keep the keyboard focus unlike when the event is
                started with a mouse click.<br>
                Buttons added by code (to a Parent with <code class="bbCodeInline">TabFocusPush,</code>)
                during the runtime will not use <code class="bbCodeInline">ControlShortcutKey,</code>
                making this quite static (like most in fdf). One
                could use OsKeyEvents for something more
                dynamic.<br>
                An example fdf:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI\FrameDef\UI\EscMenuTemplates.fdf",

// The Hotkeys for the Buttons
StringList {
KeyMyButton1 "1",
KeyMyButton2 "2",
KeyMyButton3 "3",
}

Frame "FRAME" "MyButtonF" {
Width 0.1,
Height 0.1,
TabFocusPush, // Enables ControlShortcutKey for children
LayerStyle "IGNORETRACKEVENTS", // this Frame itself will not control/Block the Mouse
Frame "BUTTON" "MyButton1" INHERITS WITHCHILDREN "EscMenuButtonTemplate" {
ControlShortcutKey "KeyMyButton1",
SetPoint TOP, "MyButtonF", TOP, 0, 0,
}
Frame "BUTTON" "MyButton2" INHERITS WITHCHILDREN "EscMenuButtonTemplate" {
ControlShortcutKey "KeyMyButton2",
SetPoint TOP, "MyButton1", BOTTOM, 0, 0,       
}
Frame "BUTTON" "MyButton3" INHERITS WITHCHILDREN "EscMenuButtonTemplate" {
ControlShortcutKey "KeyMyButton3",
SetPoint TOP, "MyButton2", BOTTOM, 0, 0,       
}

}</code></pre>
                    </div>
                </div>The result of the fdf. It creates 3 Strings
                (KeyMyButton1, KeyMyButton2, KeyMyButton3) and
                Defines FRAME "MyButtonF" as well as it's 3 Child
                ButtonFrames "MyButton1", "MyButton2" and
                "MyButton3".<br>
                <br>
                The Lua code to Load the fdf/toc create the Frames,
                trigger and events to listen to the Button
                clicks.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\Test.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MyButtonF"</span><span class="prism-token prism-punctuation">,</span>  <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.6</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MyButton1"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MyButton2"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MyButton3"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"click"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- for some reason the buttons did not use hotkeys on default but after the were hidden and shown the hotkeys work</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>One still would need to write the toc and fdf.
                And import them into the map.<br>
                <br>
                <a id="Frames_CHECKBOX"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Checkbox
                    </h2>
                </span>A checkbox is an Frame that has 2 states
                unchecked and checked. This state is visualy shown
                with a function Highlight child-Frame.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> CheckBoxCheckHighlight
Format: CheckBoxCheckHighlight "FrameName",
Example: CheckBoxCheckHighlight "BattleNetRadioButtonHighlightTemplate",
Purpose: Frame beeing created that is used as CheckBoxCheckHighlight. It is a frame of type HIGHLIGHT. Displays while the CheckBox is checked and enabled.

CheckBoxDisabledCheckHighlight
Format: CheckBoxDisabledCheckHighlight FrameName,
Example: CheckBoxDisabledCheckHighlight "EscMenuDisabledCheckHighlightTemplate",
Purpose: Same as CheckBoxCheckHighlight in disabled State.</code></pre>
                    </div>
                </div><br>
                Example CheckBox from Blizzard:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "GLUECHECKBOX" "EscMenuCheckBoxTemplate" {
Width 0.024,
Height 0.024,

ControlBackdrop "EscMenuCheckBoxBackdrop",
Frame "BACKDROP" "EscMenuCheckBoxBackdrop" {
DecorateFileNames,
BackdropBlendAll,
BackdropBackground  "EscMenuCheckBoxBackground",
}

ControlDisabledBackdrop "EscMenuDisabledCheckBoxBackdrop",
Frame "BACKDROP" "EscMenuDisabledCheckBoxBackdrop" {
DecorateFileNames,
BackdropBlendAll,
BackdropBackground  "EscMenuDisabledCheckBoxBackground",
}

ControlPushedBackdrop "EscMenuCheckBoxPushedBackdrop",
Frame "BACKDROP" "EscMenuCheckBoxPushedBackdrop" {
DecorateFileNames,
BackdropBlendAll,
BackdropBackground  "EscMenuCheckBoxPushedBackground",
}

CheckBoxCheckHighlight "EscMenuCheckHighlightTemplate",
Frame "HIGHLIGHT" "EscMenuCheckHighlightTemplate" {
DecorateFileNames,
HighlightType "FILETEXTURE",
HighlightAlphaFile "EscMenuCheckBoxCheckHighlight",
HighlightAlphaMode "BLEND",
}

CheckBoxDisabledCheckHighlight "EscMenuDisabledCheckHighlightTemplate",
Frame "HIGHLIGHT" "EscMenuDisabledCheckHighlightTemplate" {
DecorateFileNames,
HighlightType "FILETEXTURE",
HighlightAlphaFile "EscMenuDisabledCheckHighlight",
HighlightAlphaMode "BLEND",
}
}</code></pre>
                    </div>
                </div><br>
                <a id="Frames_Dialog"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Dialog - Yes/No
                    </h2>
                </span>Dialog is a Frame to give the player the
                option to accept or decline. But the dialogevents
                are only useable when the dialog's buttons were
                defined in fdf.<br>
                <br>
                <br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block"
                            data-lang=""><code>DialogBackdrop
Format: DialogBackdrop FrameName,
Example: DialogBackdrop "MyOptionsConfirmDialogBackdrop",
Purpose: ControlBackdrop for DIALOG

DialogOkButton
Format: DialogOkButton FrameName,
Example: DialogOkButton "ConfirmOKButton",
Purpose: GLUETEXTBUTTON for DIALOG used as ok. The GLUETEXTBUTTON has to be a direct child of the dialog.

DialogCancelButton
Format: DialogCancelButton FrameName,
Example: DialogCancelButton "ConfirmCancelButton",
Purpose: GLUETEXTBUTTON for DIALOG used as cancel. The GLUETEXTBUTTON has to be a direct child of the dialog.</code></pre>
                    </div>
                </div><br>
                Example pseudo Lua code, expects
                war3mapimported\\Test.toc &amp;
                war3mapimported\\Test.fdf<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block"
                            data-lang="lua"><code class=" language-lua"><span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapimported\\Test.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> dia <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MySimplyDialog"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzGetTriggerFrameEvent</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> FRAMEEVENT_DIALOG_ACCEPT <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Dialog Accept"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">else</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Dialog Reject"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetParent</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>    
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> dia<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_DIALOG_ACCEPT<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> dia<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_DIALOG_CANCEL<span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div><a href="https://www.hiveworkshop.com/attachments/390836/" target="_blank">View attachment
                    390836</a><br>
                Small Simple Dialog<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI\FrameDef\UI\EscMenuTemplates.fdf",
IncludeFile "UI\FrameDef\Glue\StandardTemplates.fdf",
Frame "DIALOG" "MySimplyDialog" {
Height 0.06,
Width 0.09,
SetPoint CENTER, "ConsoleUI", CENTER, 0, 0,

DialogBackdrop "MySimplyDialogBackdrop",
Frame "BACKDROP" "MySimplyDialogBackdrop" {
UseActiveContext,
SetAllPoints,
DecorateFileNames,
BackdropTileBackground,
BackdropBackground          "EscMenuEditBoxBackground",
BackdropCornerFlags         "UL|UR|BL|BR|T|L|B|R",
BackdropCornerSize          0.0125,
BackdropBackgroundInsets    0.005f 0.005f 0.005f 0.005f,
BackdropEdgeFile            "EscMenuEditBoxBorder",
BackdropBlendAll,
}

Frame "TEXT" "MySimplyDialogTitleText" INHERITS "StandardTitleTextTemplate" {
SetPoint TOP, "MySimplyDialog", TOP, 0.0, -0.005,
Text "Kick Red",
}

DialogOkButton "MySimplyDialogOKButton",    
Frame "GLUETEXTBUTTON" "MySimplyDialogOKButton" INHERITS WITHCHILDREN "EscMenuButtonTemplate" {
Width 0.04,
Height 0.03,
SetPoint BOTTOMRIGHT,"MySimplyDialog", BOTTOM, 0, 0.005625,
ControlShortcutKey "KEY_OK_SHORTCUT",
ButtonText "ConfirmOKButtonText",
Frame "TEXT" "ConfirmOKButtonText" INHERITS "StandardButtonTextTemplate" {
Text "YES",
}
}

DialogCancelButton "MySimplyDialogCancelButton",
Frame "GLUETEXTBUTTON" "MySimplyDialogCancelButton" INHERITS WITHCHILDREN "StandardButtonTemplate" {
Width 0.04,
Height 0.03,
SetPoint BOTTOMLEFT,"MySimplyDialog", BOTTOM, 0, 0.005625,
ControlShortcutKey "KEY_CANCEL_SHORTCUT",
ButtonText "ConfirmCancelButtonText",
Frame "TEXT" "ConfirmCancelButtonText" INHERITS "StandardButtonTextTemplate" {
Text "NO",
}
}
}</code></pre>
                    </div>
                </div><br>
                <a id="Frames_EditBox"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        EditBox - User Text
                    </h2>
                </span>Editboxes are single line text frames beeing
                editable by players. There are 4 predefined
                mainframe Editboxes in the default fdfs, but 2 of
                them are basicly "equal" to some other one.<br>
                <ul>
                    <li data-xf-list-type="ul">
                        BattleNetEditBoxTemplate (same values as
                        "StandardEditBoxTemplate")</li>
                    <li data-xf-list-type="ul">
                        StandardEditBoxTemplate</li>
                    <li data-xf-list-type="ul">
                        StandardDecoratedEditBoxTemplate (same
                        values as "EscMenuEditBoxTemplate")</li>
                    <li data-xf-list-type="ul">
                        EscMenuEditBoxTemplate</li>
                </ul>All of them are not loaded on default. In this
                tutorial I use "EscMenuEditBoxTemplate" from
                "UI\FrameDef\UI\escmenutemplates.fdf".<br>













                <div class="bbImageWrapper  js-lbImage" title="editbox-jpg.325274"
                    data-src="https://www.hiveworkshop.com/attachments/editbox-jpg.325274/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;editbox-jpg.325274&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Editbox.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/editbox-jpg.325274/" class="bbImage"
                        data-zoom-target="1" style="" alt="editbox-jpg.325274" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                An Editbox is used to let the player type in text.
                There are 2 events for editboxes handling text
                input:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>FRAMEEVENT_EDITBOX_TEXT_CHANGED
FRAMEEVENT_EDITBOX_ENTER</code></pre>
                    </div>
                </div>In both events one uses <code class="bbCodeInline">BlzGetTriggerFrameText</code>
                to get the text <code class="bbCodeInline">GetTriggerPlayer</code> has
                inside its box during the event this text is
                synced.<br>
                <br>
                <code class="bbCodeInline">BlzGetTriggerFrameText</code>
                length won't exceed 255. Text after the 255.
                position is not contained inside <code class="bbCodeInline">BlzGetTriggerFrameText</code>.<br>
                <br>
                <code class="bbCodeInline">FRAMEEVENT_EDITBOX_ENTER</code>,
                when the local player gave the editbox focus and
                presses enter/return. The currently local text in
                the editbox will be <code class="bbCodeInline">BlzGetTriggerFrameText</code>.<br>
                <br>
                <code class="bbCodeInline">FRAMEEVENT_EDITBOX_TEXT_CHANGED</code>,
                when for the local player the text of the editbox
                changed. Happens on adding/Removing Text by player
                or by code (Setting the text synced will evoke one
                event for each player). This event will happen quite
                often.<br>
                <br>
                Outside of this events one would need <code class="bbCodeInline">BlzFrameGetText</code> to
                get the text, but <code class="bbCodeInline">BlzFrameGetText</code>
                returns for each player the text he currently has in
                his editbox -&gt; is not synced in multiplayer.
                Therefore one has to sync it using the
                frameevents.<br>
                <br>
                <h3 style="margin: 0">
                    Example
                </h3>Thats our Lua code for the demo. It Loads the
                custom tocFile, creates a frame of name
                "EscMenuEditBoxTemplate" and registeres 2 events to
                that frame. Also when the local player has its
                keyboard focus on the editbox and presses
                enter/return, its current insert text will be shown
                in the message frame and that message is saved in
                the gui variable udg_UserInput[playerIndex].<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">EditBoxEnter</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EditBoxEnter:"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrameText</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetPlayerName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
udg_UserInput<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">GetConvertedPlayerId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetTriggerFrameText</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-comment">--save the text of the local player in a synced manner.</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">TEXT_CHANGED</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--print("TEXT_CHANGED")</span>
<span class="prism-token prism-comment">--print(BlzGetTriggerFrameText())</span>
<span class="prism-token prism-comment">--print(GetPlayerName(GetTriggerPlayer()))</span>
<span class="prism-token prism-keyword">end</span>


<span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapimported\\templates.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> editbox <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EscMenuEditBoxTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-comment">--create the box</span>
<span class="prism-token prism-keyword">local</span> eventHandler
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>editbox<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-comment">-- pos the box</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>editbox<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.2</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.03</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-comment">--set the boxs size</span>
eventHandler <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-comment">--Create the FRAMEEVENT_EDITBOX_ENTER trigger</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>eventHandler<span class="prism-token prism-punctuation">,</span> EditBoxEnter<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>eventHandler<span class="prism-token prism-punctuation">,</span> editbox<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_EDITBOX_ENTER<span class="prism-token prism-punctuation">)</span>
eventHandler <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-comment">--Create the FRAMEEVENT_EDITBOX_TEXT_CHANGED trigger</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>eventHandler<span class="prism-token prism-punctuation">,</span> TEXT_CHANGED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>eventHandler<span class="prism-token prism-punctuation">,</span> editbox<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_EDITBOX_TEXT_CHANGED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                This Trigger will print the text the local player
                has currently shown in his editbox. The currently
                Shown text is probably not synced and can desync the
                game, if it is used in a synced manner.<br>



                <ul class="bbcode-trigger" data-xf-init="trigger-tag">


                    <li>
                        <img src="./index_files/base.gif"><span>Press
                            Esc</span>

                        <ul>





                            <li>
                                <img src="./index_files/joinminus.gif" class="expander"
                                    data-alternative="/styles/default/ratory/trigger_legacy/joinplus.gif"><img
                                    src="./index_files/events.gif"><span>Events</span>

                                <ul>





                                    <li>
                                        <img src="./index_files/line.gif"><img src="./index_files/join.gif"><img
                                            src="./index_files/player.gif"><span>Player
                                            - Player 1 (Red) skips a
                                            cinematic
                                            sequence</span>

                                    </li>





                                    <li>
                                        <img src="./index_files/line.gif"><img src="./index_files/joinbottom.gif"><img
                                            src="./index_files/player.gif"><span>Player
                                            - Player 2 (Blue) skips
                                            a cinematic
                                            sequence</span>

                                    </li>






                                </ul>
                            </li>



                            <li>
                                <img src="./index_files/join.gif"><img
                                    src="./index_files/cond.gif"><span>Conditions</span>

                            </li>





                            <li>
                                <img src="./index_files/joinbottomminus.gif" class="expander"
                                    data-alternative="/styles/default/ratory/trigger_legacy/joinbottomplus.gif"><img
                                    src="./index_files/actions.gif"><span>Actions</span>

                                <ul>





                                    <li>
                                        <img src="./index_files/empty.gif"><img src="./index_files/joinbottom.gif"><img
                                            src="./index_files/page.gif"><span>Custom
                                            script:
                                            print(BlzFrameGetText(BlzGetFrameByName("EscMenuEditBoxTemplate",0)))</span>

                                    </li>






                                </ul>
                            </li>




                        </ul>
                    </li>


                </ul>












                <div class="bbImageWrapper  js-lbImage" title="editbox-pressed-enter-jpg.325275"
                    data-src="https://www.hiveworkshop.com/attachments/editbox-pressed-enter-jpg.325275/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;editbox-pressed-enter-jpg.325275&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Editbox Pressed Enter.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/editbox-pressed-enter-jpg.325275/"
                        class="bbImage" data-zoom-target="1" style="" alt="editbox-pressed-enter-jpg.325275" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                <br>
                <h2 style="margin: 0">
                    Text Limits
                </h2>One might want to limit the amount of Text the
                player can put into the editbox, one can set such a
                limit by code quite simple. The native one uses is
                <code class="bbCodeInline">BlzFrameSetTextSizeLimit takes framehandle frame, integer size</code>.<br>
                After using <code class="bbCodeInline">BlzFrameSetTextSizeLimit(editbox, 10)</code>
                the editbox can only contain 10 chars.<br>
                As said above it does not make much sense to allow a
                limit above 255 when the text has to be used inside
                Events in a synced manner.<br>
                An editbox can containt 4096 chars, if that amount
                is exceeded, it becomes invisible.(KeepVary)<br>
                On default an editbox uses an TextSizeLimit of -256
                which allows any amount of input, but regardless of
                allowed input only 255 are useable inside the
                events.<br>
                <br>
                One can read the current limit with <code
                    class="bbCodeInline">BlzFrameGetTextSizeLimit(editbox)</code>.<br>
                <br>
                The Editbox inputtext will be in one line even with
                a bigger height.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block"
                            data-lang=""><code>EditBorderSize
Format: EditBorderSize real,
Example: EditBorderSize 0.009,
Purpose: Offsets Text by that amount from the border 

EditCursorColor
Format: EditCursorColor real real real real,
Example: EditCursorColor 1.0 1.0 1.0 1.0,
Purpose:  Defines the color of the EditBox's Cursor | while it has focus. The alpha value can be skiped then it is 1.0.

EditText
Format: EditText text,
Example: EditText "YES",
Purpose: Initial Text in the EditBox

EditTextColor
Format: EditTextColor red green blue alpha,
Example: EditTextColor 1.0 1.0 1.0,
Purpose: Defines the color of the EditBox's Text. The alpha value can be skiped then it is 1.0. FontColor inside EditTextFrame is stronger.

EditTextFrame
Format: EditTextFrame FrameName,
Example: EditTextFrame "SaveGameFileEditBoxText", 
Purpose: Style the Text of the EditBox. Expects a TEXT-Frame. For some Reasons EditTextFrame has no effect onto the Cursor. The EditBox itself can have a FrameFont to change the Cursors Font.

EditTextOffset
Format: EditTextOffset x y,
Example: EditTextOffset 0.01 0.0,
Purpose: Offsets the Text inside the Editbox, the Text can not leave the EditBox using this. If it would leave the text becomes "hidden".

FrameFont "MasterFont", 0.015, "",
FrameFont directly in the EditBox defines the Cursor's Font(Size).

EditHighlightColor
Format: EditHighlightColor red green blue alpha,
Example: EditHighlightColor 1.0 1.0 1.0 0.5,
Purpose: Color of the EditBox's Marked Text Box. Alpha should not be 1.0 because it makes the marked text unreadable. The alpha value can be skiped then it is 1.0.

EditHighlightInitial
Format: EditHighlightInitial,
Purpose: The initial Text is marked. The Cursor FontSize and Text FontSize should match otherwise only a part of the initial text is marked.

EditMaxChars
Format: EditMaxChars int,
Example: EditMaxChars 11,
Purpose: Can't write more than that amount of Chars into the EditBox. Chars that take more than one byte take multiple slots. For example 11 can be 1234567890A or ÄÄÄÄÄA as Ä take 2 bytes. Pasting text into with a longer text is rejected. Chars that require more than 1 byte 

EditSetFocus
Format: EditSetFocus,
Purpose: Gives this Frame focus when it is created. The focus given that way is quite strong clicking on the ground does not transfer focus nor does hiding it, But clicking onto another custom UI took it away and the focus became normal.</code></pre>
                    </div>
                </div>Here is an example of an EditBox fdf with a
                bigger FontSize.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI/FrameDef/UI/EscMenuTemplates.fdf",

Frame "EDITBOX" "CustomCommandsEditBox" INHERITS WITHCHILDREN "EscMenuEditBoxTemplate" {
Width 0.15,
Height 0.037,
DecorateFileNames,
FrameFont "MasterFont", 0.015, "",

EditTextFrame "CustomCommandsEditBoxText",
Frame "TEXT" "CustomCommandsEditBoxText" INHERITS "EscMenuEditBoxTextTemplate" {
}
}</code></pre>
                    </div>
                </div><br>
                <a id="Frames_ListBox"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        ListBox
                    </h2>
                </span>it seems that (In 1.32.6) the frame api lacks
                events to use LISTBOX making it kinda weak. But
                anyway here is an example how to create a ListBox
                using fdf + Lua.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI\FrameDef\Glue\StandardTemplates.fdf",
IncludeFile "UI\FrameDef\UI\EscMenuTemplates.fdf",

Frame "LISTBOXITEM" "MyListBoxItemTemplate"  {
}
Frame "LISTBOX" "MyListBox" {
Height 0.08,
Width 0.12,
SetPoint CENTER, "ConsoleUI", CENTER, 0, 0,

ControlBackdrop "ListBoxBackdrop",
Frame "BACKDROP" "ListBoxBackdrop" INHERITS "EscMenuEditBoxBackdropTemplate" {
UseActiveContext,
}

ListBoxScrollBar "ListScrollBar",
Frame "SCROLLBAR" "ListScrollBar" INHERITS WITHCHILDREN "StandardScrollBarTemplate" {
}

Frame "LISTBOXITEM" "A" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item A",
}
Frame "LISTBOXITEM" "B" INHERITS WITHCHILDREN "MyListBoxItemTemplate"  {
Text "Item B",
}
Frame "LISTBOXITEM" "C" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item C",
}
Frame "LISTBOXITEM" "D" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item D",
}
Frame "LISTBOXITEM" "E" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item E",
}
Frame "LISTBOXITEM" "F" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item F",
}
Frame "LISTBOXITEM" "G" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item G",
}
Frame "LISTBOXITEM" "H" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item H",
}
Frame "LISTBOXITEM" "I" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item I",
}
Frame "LISTBOXITEM" "J" INHERITS WITHCHILDREN "MyListBoxItemTemplate" {
Text "Item J",
}


ListBoxBorder 0.01, // how big is the used border used for offsetting the items

ListBoxItemHeight 0.013,
ListBoxItem ADDEND, "A", // position at which FrameName is added, sadly the target loses its name
ListBoxItem ADDEND, "B",
ListBoxItem ADDEND, "C",
ListBoxItem ADDEND, "D",
ListBoxItem ADDEND, "E",
ListBoxItem ADDEND, "F",
ListBoxItem ADDEND, "G",
ListBoxItem ADDEND, "H",
ListBoxItem ADDEND, "I",
ListBoxItem ADDEND, "J",
}</code></pre>
                    </div>
                </div>











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">Test</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> data <span class="prism-token prism-operator">=</span> <span class="prism-token prism-punctuation">{</span><span class="prism-token prism-punctuation">}</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapimported\\Test.toc"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> dia <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MyListBox"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">if</span> data<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span>data<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Action"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">else</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Action"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetText</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrameEvent</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetTriggerFrameValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">registerFrameEvents</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">for</span> i<span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">16</span> <span class="prism-token prism-keyword">do</span> 
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span>i<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-function">registerFrameEvents</span><span class="prism-token prism-punctuation">(</span>dia<span class="prism-token prism-punctuation">)</span>


<span class="prism-token prism-comment">-- The FrameEvents for ListBoxs are lacking. one would have to find the ListBoxItems over the child api (because they lost their name) and register the items    </span>
<span class="prism-token prism-keyword">for</span> i <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>dia<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span> <span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> child <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>dia<span class="prism-token prism-punctuation">,</span> i<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">registerFrameEvents</span><span class="prism-token prism-punctuation">(</span>child<span class="prism-token prism-punctuation">)</span>
data<span class="prism-token prism-punctuation">[</span>child<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> <span class="prism-token prism-string">"Child "</span><span class="prism-token prism-operator">..</span>i
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"child Count of Child "</span><span class="prism-token prism-punctuation">,</span> i<span class="prism-token prism-punctuation">,</span><span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>child<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>child<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">&gt;</span> <span class="prism-token prism-number">0</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-keyword">for</span> j <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetChildrenCount</span><span class="prism-token prism-punctuation">(</span>child<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span> <span class="prism-token prism-keyword">do</span>
data<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>child<span class="prism-token prism-punctuation">,</span> j<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> <span class="prism-token prism-string">"GrandChild "</span><span class="prism-token prism-operator">..</span>j
<span class="prism-token prism-function">registerFrameEvents</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzFrameGetChild</span><span class="prism-token prism-punctuation">(</span>child<span class="prism-token prism-punctuation">,</span> j<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"done"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <a id="Frames_HIGHLIGHT"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Highlight
                    </h2>
                </span>Highlight are only used as functional
                child-Frames. In Warcraft 3 V1.31 and 1.32 there is
                no way to alter the used Texture during the
                game.<br>
                Changing the Parent of a Highlight during the game
                can bug it making it overglow sometimes.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> HighlightAlphaFile
Format: HighlightAlphaFile FilePath,
Examples: HighlightAlphaFile "UI\Glues\ScoreScreen\scorescreen-tab-hilight.blp",
"UI\Widgets\BattleNet\bnet-button01-highlight-mouse.blp" //Blue glow
"UI\Widgets\Glues\GlueScreen-Button-KeyboardHighlight.blp" //bluesurronding
"UI\Widgets\Glues\GlueScreen-CampaignButton-KeyboardHighlight.blp" //bluesqure
"UI\Widgets\Glues\GlueScreen-RadioButton-Button.blp" //Blue point
"UI\Widgets\Glues\GlueScreen-RadioButton-ButtonDisabled.blp" //gray point
"UI\Glues\ScoreScreen\scorescreen-tab-hilight.blp" //yellow glow
"UI\Widgets\Glues\GlueScreen-Checkbox-Check.blp" //golden checked
"UI\Widgets\Glues\GlueScreen-Checkbox-CheckDisabled.blp" //gray checked
Purpose: Set the file beeing used by that Highlight

HighlightAlphaMode
Format1: HighlightAlphaMode "ADD",
Format2: HighlightAlphaMode "BLEND",
Purpose: Changes the way the Highlight interacts with the Frame below. "BLEND" is used by the Blizzard CheckBoxes.

HighlightType
HighlightType "FILETEXTURE",
Purpose: 
HighlightType "SHADE",
Purpose: 

HighlightColor
Format: HighlightColor red green blue alpha,
Example: HighlightColor 1.0 0.0 0.0 0.2,
Purpose: Appears together with HighlightType "SHADE",</code></pre>
                    </div>
                </div><br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "HIGHLIGHT" "EscMenuCheckHighlightTemplate" {
DecorateFileNames,
HighlightType "FILETEXTURE",
HighlightAlphaFile "EscMenuCheckBoxCheckHighlight",
HighlightAlphaMode "BLEND",
}</code></pre>
                    </div>
                </div><br>
                <a id="Frames_FRAME"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Frame
                    </h2>
                </span>FRAME fights for mousecontrol of the Screen
                space given to him still can not have any
                FrameEvents. It is possible to give and use FRAME
                a(s) Tooltip. <br>
                They can not have functional Child-Frames. Making
                them a good usage for dummy Frames and logical
                Containers.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "FRAME" "MyFrame" {
LayerStyle "IGNORETRACKEVENTS", // this Frame itself will not control/Block the Mouse
}</code></pre>
                    </div>
                </div><br>
                <br>
                <a id="Frames_POPUPMENU"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Popupmenu
                    </h2>
                </span>In warcraft 3 a Popupmenu is a Button when it
                is clicked below it the selectable options appear.
                PopupMenu have various functional Childframes. The
                selectable options can only be set in fdf (Warcraft
                3 version 1.31 and 1.32).<br>
                Checkout the Fdf below: "MyPopupTemplate" is a
                PopupMenu misses the selectable options but a
                setting for the visuals making it a good inherit
                source. Therefore it is inherited by "TestPopup" and
                "CustomCommandsPopup" they also setupt the
                chooseable options.<br>
                Inside code one can get the current selected option
                index with <code class="bbCodeInline">BlzFrameGetValue</code>
                starting with 0, it also can return -1 when nothing
                was selected. Inside
                FRAMEEVENT_POPUPMENU_ITEM_CHANGED
                BlzGetTriggerFrameValue() returns the new choosen
                Value and it can be used synced. One can set the
                selected Value with BlzFrameSetValue, but that will
                not trigger a FRAMEEVENT_POPUPMENU_ITEM_CHANGED
                event.<br>
                This fdf is a custom PopupMenu with a EditBox, the
                idea is to have 3 selectable options, based on the
                choosen option the player sets it's gold Lumber or
                food to insert value.<br>
                <br>
                In Warcraft 3 V1.31.x the MENU of a "POPUPMENU"
                breaks when the "POPUPMENU" is placed outside of the
                4:3 Screen.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI/FrameDef/UI/EscMenuTemplates.fdf",

Frame "POPUPMENU" "MyPopupTemplate" {
Width 0.19625,
Height 0.03,
PopupButtonInset 0.01, // -x offset for PopupArrowFrame from RIGHT of the POPUPMENU

// Background Enabled
ControlBackdrop "MyPopupTemplateBackdropTemplate",
Frame "BACKDROP" "MyPopupTemplateBackdropTemplate" INHERITS "EscMenuButtonBackdropTemplate" {
}

// Background Disabled
ControlDisabledBackdrop "MyPopupTemplateDisabledBackdropTemplate",
Frame "BACKDROP" "MyPopupTemplateDisabledBackdropTemplate" INHERITS "EscMenuButtonDisabledBackdropTemplate" {
}

// Text markup for the current selected Text, also can be used with a FrameEvent to know when someone starts selecting.
PopupTitleFrame "PopupMenuTitleTemplate",
Frame "GLUETEXTBUTTON" "PopupMenuTitleTemplate" INHERITS WITHCHILDREN "EscMenuPopupMenuTitleTemplate" {
}

// the Arrow at the right
PopupArrowFrame "PopupMenuArrowTemplate",
Frame "BUTTON" "PopupMenuArrowTemplate" INHERITS WITHCHILDREN "EscMenuPopupMenuArrowTemplate" { 
}

// The Container for the selectable options
// actulay it is smarter to not define this in the Template.
//PopupMenuFrame "TestPopupMenu",
//Frame "MENU" "TestPopupMenu" INHERITS WITHCHILDREN "EscMenuPopupMenuMenuTemplate" {
//	
//	}	
}

Frame "POPUPMENU" "TestPopup" INHERITS WITHCHILDREN "MyPopupTemplate" {
// The Container for the selectable options
PopupMenuFrame "TestPopupMenu",
Frame "MENU" "TestPopupMenu" INHERITS WITHCHILDREN "EscMenuPopupMenuMenuTemplate" {
// the selectable options
// they will try to load a Localized String
MenuItem "TestA",     -2,
MenuItem "TestB",     -2,
MenuItem "TestC",     -2,
MenuItem "TestD",     -2,
}
}

Frame "POPUPMENU" "CustomCommandsPopup" INHERITS WITHCHILDREN "MyPopupTemplate" {
PopupMenuFrame "CustomCommandsPopupMenu",
Frame "MENU" "CustomCommandsPopupMenu" INHERITS WITHCHILDREN "EscMenuPopupMenuMenuTemplate" {
MenuItem "COLON_GOLD",     -2,
MenuItem "COLON_LUMBER",     -2,
MenuItem "COLON_FOOD",     -2,
}
}

Frame "EDITBOX" "CustomCommandsEditBox" INHERITS WITHCHILDREN "EscMenuEditBoxTemplate" {
Width 0.15,
Height 0.037,
DecorateFileNames,
FrameFont "MasterFont", 0.015, "",
SetPoint TOPLEFT, "CustomCommandsPopup", TOPRIGHT, 0.0, 0.0,

EditTextFrame "CustomCommandsEditBoxText",
Frame "TEXT" "CustomCommandsEditBoxText" INHERITS "EscMenuEditBoxTextTemplate" {
}
}</code></pre>
                    </div>
                </div><br>
                This is the Lua code that creates the PopupMenu and
                multiple Editboxes.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span> <span class="prism-token prism-string">"war3mapImported\\TestPop.toc"</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> currentFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">nil</span>
<span class="prism-token prism-keyword">local</span> popupFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomCommandsPopup"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span> popupFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_TOPLEFT<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.20</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.30</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> editBox <span class="prism-token prism-operator">=</span> <span class="prism-token prism-punctuation">{</span><span class="prism-token prism-punctuation">}</span>
<span class="prism-token prism-keyword">local</span> editBoxTrigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>editBoxTrigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">SetPlayerState</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> editBox<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">tonumber</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrameText</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- clear the box for the Active Player</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetFocus</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">add</span><span class="prism-token prism-punctuation">(</span>playerState<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> tempBox <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CustomCommandsEditBox"</span><span class="prism-token prism-punctuation">,</span> popupFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
table<span class="prism-token prism-punctuation">.</span><span class="prism-token prism-function">insert</span><span class="prism-token prism-punctuation">(</span>editBox<span class="prism-token prism-punctuation">,</span> tempBox<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>editBoxTrigger<span class="prism-token prism-punctuation">,</span> tempBox<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_EDITBOX_ENTER<span class="prism-token prism-punctuation">)</span>
editBox<span class="prism-token prism-punctuation">[</span>tempBox<span class="prism-token prism-punctuation">]</span> <span class="prism-token prism-operator">=</span> playerState
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>tempBox<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-comment">-- create 3 boxes one for Gold, Lumber and Food</span>
<span class="prism-token prism-function">add</span><span class="prism-token prism-punctuation">(</span>PLAYER_STATE_RESOURCE_GOLD<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">add</span><span class="prism-token prism-punctuation">(</span>PLAYER_STATE_RESOURCE_LUMBER<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">add</span><span class="prism-token prism-punctuation">(</span>PLAYER_STATE_RESOURCE_FOOD_CAP<span class="prism-token prism-punctuation">)</span>

add <span class="prism-token prism-operator">=</span> <span class="prism-token prism-keyword">nil</span>

<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-comment">-- hide current Box</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>currentFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">false</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- change current Box and show it</span>
currentFrame <span class="prism-token prism-operator">=</span> editBox<span class="prism-token prism-punctuation">[</span><span class="prism-token prism-function">BlzGetTriggerFrameValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">]</span>
<span class="prism-token prism-function">BlzFrameSetVisible</span><span class="prism-token prism-punctuation">(</span>currentFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-comment">-- give that box the keyboard input focus</span>
<span class="prism-token prism-function">BlzFrameSetFocus</span><span class="prism-token prism-punctuation">(</span>currentFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> popupFrame<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_POPUPMENU_ITEM_CHANGED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>PopupArrowFrame
Format: PopupArrowFrame FrameName,
Example: PopupArrowFrame "AdvancedPopupMenuArrow", 
Purpose: Choose the BUTTON-Frame of the POPUPMENU

PopupButtonInset
Format: PopupButtonInset real,
Example: PopupButtonInset 0.01,
Purpose: 

PopupMenuFrame
Format: PopupMenuFrame FrameName,
Example: PopupMenuFrame "RacePopupMenuMenu",
Purpose: Choose the MENU for this POPMENU, the Menu contains the chooseable options.

PopupTitleFrame
Format: PopupTitleFrame FrameName,
Example: PopupTitleFrame "EscOptionsShadowsPopupMenuTitle", 
Purpose: Choose a GLUETEXTBUTTON for the PopupMenu

//This Belongs</code></pre>
                    </div>
                </div>MENU's Fdf-Action. Menu is strongly connected
                to PopupMenu<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>// Example from EscMenuTemplates
Frame "MENU" "EscMenuPopupMenuMenuTemplate" {
DecorateFileNames,
Height 0.03,
FrameFont "EscMenuTextFont",0.011,"",
MenuTextHighlightColor 1.0 0.0 0,
MenuItemHeight 0.014,
MenuBorder 0.009,

ControlBackdrop "EscMenuPopupMenuMenuBackdropTemplate",
Frame "BACKDROP" "EscMenuPopupMenuMenuBackdropTemplate" INHERITS "EscMenuButtonBackdropTemplate" {
DecorateFileNames,
BackdropBackground "EscMenuEditBoxBackground",
}
}</code></pre>
                    </div>
                </div>








                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>MenuBorder
Format: MenuBorder real,
Example: MenuBorder 0.01,
Purpose:

MenuItem
Format: MenuItem Text, integer, 
Example: MenuItem "ON", -2, 
Purpose: Adds an Selectable option to a MENU / PopupMenuFrame. The number is always -2 in Blizzards fdfs.

MenuItemHeight
Format: MenuItemHeight real,
Example: MenuItemHeight 0.014,
Purpose: The height of one option of the MENU. The used fontsize should fit into this, otherwise you might see no displayed Text.

MenuTextHighlightColor
Format: MenuTextHighlightColor red green blue alpha, 
Example: MenuTextHighlightColor 0.99 0.827 0.0705 1.0, 
Purpose:</code></pre>
                    </div>
                </div><br>
                <a id="Frames_RADIOGROUP"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        RadioGroup
                    </h2>
                </span>RadioGroup binds checkboxes into a group
                together with ControlStyle "EXCLUSIVE", one can make
                sure only one of them is selected. Each player can
                have a different selected.<br>
                <br>
                Example of a 4 checkbox RadioGroup<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI\FrameDef\UI\EscMenuTemplates.fdf",
Frame "RADIOGROUP" "RadioGroup" {
ControlStyle "EXCLUSIVE",

Frame "GLUECHECKBOX" "CheckBoxA" INHERITS WITHCHILDREN "EscMenuCheckBoxTemplate" {
Width  0.012,
Height 0.012,
SetPoint CENTER, "ConsoleUI", CENTER, 0, 0,   
}
Frame "GLUECHECKBOX" "CheckBoxB" INHERITS WITHCHILDREN "EscMenuCheckBoxTemplate" {
Width  0.012,
Height 0.012,
SetPoint CENTER, "ConsoleUI", CENTER, 0.1, 0,   
}
Frame "GLUECHECKBOX" "CheckBoxC" INHERITS WITHCHILDREN "EscMenuCheckBoxTemplate" {
Width  0.012,
Height 0.012,
SetPoint CENTER, "ConsoleUI", CENTER, 0.15, 0,   
}
Frame "GLUECHECKBOX" "CheckBoxD" INHERITS WITHCHILDREN "EscMenuCheckBoxTemplate" {
Width  0.012,
Height 0.012,
SetPoint CENTER, "ConsoleUI", CENTER, 0.2, 0,   
}

RadioItem "CheckBoxA",   
RadioItem "CheckBoxB",    
RadioItem "CheckBoxC",    
RadioItem "CheckBoxD",
}</code></pre>
                    </div>
                </div>











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted

<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapimported\\Test.toc"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"RadioGroup"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Click"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">GetHandleId</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetTriggerFrameEvent</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetTriggerFrameValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxA"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_CHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxB"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_CHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxC"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_CHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxD"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_CHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxA"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_UNCHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxB"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_UNCHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxC"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_UNCHECKED<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"CheckBoxD"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CHECKBOX_UNCHECKED<span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"done"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>

<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><a id="Frames_SLIDER"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        SLIDER/Scrollbar
                    </h2>
                </span>Slider/Scrollbar are interactive frames to
                set a value inside the bounds of a min and max
                value, the min and max are valid values. The user is
                able to set the value by draging the button of the
                Slider/Scrollbar or clicking inside the
                Slider/Scrollbar. Warcraft 3 has Vertical or
                Horizontal Sliders/Scrollbars.<br>
                Scrollbar is more a functional child feature, while
                Slider is better as a free code driven frame. The
                code api works great for Slider. Not so for
                Scrollbar.<br>
                <br>
                None-Event API<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetValue</span>       <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> value <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameGetValue</span>       <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">real</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetMinMaxValue</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> minValue<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> maxValue <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetStepSize</span>    <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> stepSize <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span></code></pre>
                    </div>
                </div>BlzFrameSetValue sets the current value for
                any player running this code to value, it will
                respect MinMax of the Slider. This will trigger one
                FRAMEEVENT_SLIDER_VALUE_CHANGED for every player
                running it. The event is triggered by other players
                even when the call happens inside a GetLocalPlayer
                block. Means if your Map has 8 users and don't run
                BlzFrameSetValue inside GetLocalPlayer you trigger
                the event 8 times.<br>
                BlzFrameGetValue returns the current value of the
                local player in the Slider, as it is interactive
                treat it as a dangerous async value.<br>
                <br>
                Event-code API<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_MOUSE_WHEEL</span>               <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">6</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-class-name">frameeventtype</span>         <span class="prism-token prism-constant">FRAMEEVENT_SLIDER_VALUE_CHANGED</span>      <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">ConvertFrameEventType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">13</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzGetTriggerFrame</span>                          <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">framehandle</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzGetTriggerFrameEvent</span>                     <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">frameeventtype</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzGetTriggerFrameValue</span>                     <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">real</span>
<span class="prism-token prism-keyword">constant</span> <span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">GetTriggerPlayer</span>                   <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">player</span></code></pre>
                    </div>
                </div>FRAMEEVENT_SLIDER_VALUE_CHANGED is the event
                that happens when a player sets or got forced
                (BlzFrameSetValue) onto a value. This is a synced
                event it happens for all players with the value
                choosen by GetTriggerPlayer(). The event happens
                even when the value did not change (for example if
                the user drags the Button to the max it is very
                likely that this event happens multiple times in a
                row)<br>
                The event can be seen as GetTriggerPlayer() set
                BlzGetTriggerFrame() to BlzGetTriggerFrameValue().
                if you have a Trigger with multiple frameEvents
                BlzGetTriggerFrameEvent() can tell you which
                frameEvent happened.<br>
                <br>
                On default SLIDER do not have scroll by mouse wheel.
                But it is not much work to code it, when one uses a
                standard stepsize like 1. Then one does not even
                need any data maping.<br>
                Example code to make SLIDER scrollable by mouse
                wheel. The problem with this code is that it does
                not work when the user points at the SLIDER's
                Button.<br>
                The code would have to be placed into a Trigger
                Action/Condition with event
                FRAMEEVENT_MOUSE_WHEEL.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetTriggerFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- only set the value of the active player</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">GetLocalPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">==</span> <span class="prism-token prism-function">GetTriggerPlayer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-comment">-- Inside a Wheel Event +/- Value can be used to know the direction of rolling</span>
<span class="prism-token prism-keyword">if</span> <span class="prism-token prism-function">BlzGetTriggerFrameValue</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">&gt;</span> <span class="prism-token prism-number">0</span> <span class="prism-token prism-keyword">then</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetValue</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">else</span>
<span class="prism-token prism-function">BlzFrameSetValue</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzFrameGetValue</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">)</span> <span class="prism-token prism-operator">-</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div>In case you don't care about SLIDER in fdf
                they are quite good createable without, as shown
                here: <a href="javascript:;" data-hash="FrameExampleSliderNoFDF">Slider
                    without custom FDF</a><br>
                Slider/Scrollbar Fdf-Actions:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> SliderInitialValue
Format: SliderInitialValue integer, 
Example: SliderInitialValue 2, 
Purpose: The Slider starts with that value.

SliderLayoutHorizontal
Format: SliderLayoutHorizontal,
Purpose: Default, Slider goes from Left(min) to Right(max).

SliderLayoutVertical
Format: SliderLayoutVertical,
Purpose: The Slider goes from Bottom(min) to Top(max)

SliderMaxValue
Format: SliderMaxValue integer,
Example: SliderMaxValue 100,
Purpose: Default, 100. Max number chooseable

SliderMinValue
Format: SliderMinValue integer,
Example: SliderMinValue 0,
Purpose: Default, 0. Min number chooseable

SliderStepSize
Format: SliderStepSize integer, 
Example: SliderStepSize 1, 
Purpose: How accurate the user can choose values.

SliderThumbButtonFrame
Format: SliderThumbButtonFrame "FrameName",
Example: SliderThumbButtonFrame "EscMenuScrollThumbButton", 
Purpose: The BUTTON-Frame used to move the SLIDER/SCROLLBAR Value.

ScrollBarDecButtonFrame
Format: ScrollBarDecButtonFrame "FrameName",
Example: ScrollBarDecButtonFrame "EscMenuScrollBarDecButton", 
Purpose: Choose a BUTTON handling the Dec click.

ScrollBarIncButtonFrame
Format: ScrollBarIncButtonFrame "FrameName",
Example: ScrollBarIncButtonFrame "StandardScrollBarIncButton", 
Purpose: Choose a BUTTON handling the Inc click.</code></pre>
                    </div>
                </div><a id="Frames_SPRITE"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        SPRITE
                    </h2>
                </span>SPRITE is a non-Interactive frame displaying
                a warcraft 3 model and loops it's animation.<br>
                Changing the Parent of a Sprite during the game can
                bug, speeding up the displayed animation.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> BackgroundArt
Format: BackgroundArt FilePath,
Example: BackgroundArt "UI\Glues\ScoreScreen\ScoreScreen-TopBar\ScoreScreen-TopBar.mdl",

SpriteCamera
Format: SpriteCamera int,
Example: SpriteCamera 0,

SpriteScale
Format: SpriteScale x x x,
Example: SpriteScale 0.1 0 0,
Purpose: Scales the used Model. The 2. and 3. number are fake and don't seem to do anything.

LayerStyle "NOSHADING",</code></pre>
                    </div>
                </div><a id="Frames_StatusBar"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        STATUSBAR
                    </h2>
                </span>STATUSBAR is a non-Interactive frame
                displaying a warcraft 3 model. Unlike Sprite it does
                not loop the animation but the current animationTime
                can be set using BlzFrameSetValue as % of Min/Max to
                AnimationTime.<br>
                It is said "STATUSBAR" only supports 1s animations,
                sequzenzes after 1s are droped.<br>
                TriggerHappy encountered a situation in which units
                using the same model as the STATUSBAR were affected
                by the Bar's current animation.<br>
                This type is quite good createable with code only <a href="javascript:;"
                    data-hash="FrameExampleModelBarNoFdf">ModelBar
                    without FDF</a>.<br>
                <br>
                <a id="Frames_TEXTAREA"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        TextArea
                    </h2>
                </span><br>
                TEXTAREA is a frame to display scrollable text.
                Normaly TextAreas have a BACKDROP showing a box and
                a Background.<br>
                TextAreas require a scrollbar. The scrollbar is at
                the right side of the TextArea and blocks a part of
                the space given to the TextArea. If the TextArea is
                big enough to display the whole text, the scrollbar
                is not shown. Even when the scrollbar is not shown
                it takes its space. For not scrollable Text one
                could simply use a TEXT-Frame.<br>
                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        Built in TextArea
                    </h2>
                </span>Warcraft 3 has 2 builtIn TEXTAREA
                mainframes.<br>
                BattleNetTextAreaTemplate<br>
                EscMenuTextAreaTemplate<br>













                <div class="bbImageWrapper  js-lbImage" title="battlenettextareatemplate-jpg.333071"
                    data-src="https://www.hiveworkshop.com/attachments/battlenettextareatemplate-jpg.333071/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;battlenettextareatemplate-jpg.333071&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/BattleNetTextAreaTemplate.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/battlenettextareatemplate-jpg.333071/"
                        class="bbImage" data-zoom-target="1" style="" alt="battlenettextareatemplate-jpg.333071"
                        title="" width="" height="" loading="lazy">
                </div>














                <div class="bbImageWrapper  js-lbImage" title="escmenutextareatemplate-jpg.333073"
                    data-src="https://www.hiveworkshop.com/attachments/escmenutextareatemplate-jpg.333073/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;escmenutextareatemplate-jpg.333073&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/EscMenuTextAreaTemplate.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/escmenutextareatemplate-jpg.333073/"
                        class="bbImage" data-zoom-target="1" style="" alt="escmenutextareatemplate-jpg.333073" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                They are a good base to inherit, copy or one can
                just create them. If one wants to create one of them
                one would have to load them first using
                BlzLoadTOCFile.<br>
                <br>
                The fdfs containing them are located at:<br>
                UI\Frames\framedef\glue\battlenettemplates.fdf<br>
                UI\Frames\framedef\ui\escmenutemplates.fdf<br>
                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        Creating builtin TextArea
                    </h2>
                </span>This jass Code creates both TextAreas set the
                poistions, the size and fills them with text. It is
                quite important to give a TEXTAREA a size being big
                enough to display the scrollbar otherwise the game
                crashs on the attempt to display the TEXTAREA. The
                Height of the TextArea should be atleast 0.03. That
                is quite small, but if one forgets to set the size
                without having a default size, it will be 0 and the
                game crashs.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">function</span> CreateDefaultTextAreas <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> textArea <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"BattleNetTextAreaTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_GAME_UI</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> textArea2 <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"EscMenuTextAreaTemplate"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_GAME_UI</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">integer</span> index <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_TOPLEFT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>textArea2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_TOPLEFT</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>textArea2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">loop</span>
<span class="prism-token prism-keyword">exitwhen</span> index <span class="prism-token prism-operator">==</span> <span class="prism-token prism-number">120</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">I2S</span><span class="prism-token prism-punctuation">(</span>index<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-operator">+</span><span class="prism-token prism-string">": Test Text"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>textArea2<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">I2S</span><span class="prism-token prism-punctuation">(</span>index<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-operator">+</span><span class="prism-token prism-string">": Test Text"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> index <span class="prism-token prism-operator">=</span> index <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">endloop</span>
<span class="prism-token prism-keyword">endfunction</span>

<span class="prism-token prism-comment">//===========================================================================</span>
<span class="prism-token prism-keyword">function</span> InitTrig_Create_TextAreaTemplates <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span> <span class="prism-token prism-string">"war3mapImported\\Templates.toc"</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span> CreateDefaultTextAreas<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span></code></pre>
                    </div>
                </div><span style="color: orange">
                    <h2 style="margin: 0">
                        Seting text of a TextArea
                    </h2>
                </span>To set the text of a textarea one uses <code
                    class="bbCodeInline">BlzFrameAddText(textArea, newLine)</code>
                or <code class="bbCodeInline">BlzFrameSetText(textArea, totalText)</code>.
                BlzFrameAddText adds a line Seperator before the new
                added text, if the TextArea already contained
                text.<br>
                For a TextArea BlzFrameGetText seems to be quite
                fugitive, after 1 second it returned null, while it
                was returning the total text in the same function as
                the text was set. I didn't tested this much.<br>
                TextArea can display colored Text using warcraft
                colorformat |cffff0000.<br>
                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        Screen-Space and Scrolling
                    </h2>
                </span>On Default a TextArea will catch the
                screen-space given to it, making it unclickable for
                the playable world and sending mousewhell rolls to
                its scrollbar. One could disable the TextArea to
                stop the TextArea from taking the mouse Input which
                would make the screenspace useable by the playable
                game again, but that would also disable the mouse
                whell roll sending. One could still scroll when the
                mouse points directly to the scrollbar.<br>
                Disabling is done with:<br>
                <code class="bbCodeInline">call BlzFrameSetEnable(textArea, false)</code><br>
                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        TEXTAREA-FDF
                    </h2>
                </span>This is a custom TEXTAREA named MyTextArea
                which has some comments describing the result of
                fields of TEXTAREA inside fdf:<br>
                TEXTAREA rejects most TEXT font Settings one might
                know when one used TEXT-Frame. Hence the text
                appereance can't be changed much.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI\FrameDef\UI\EscMenuTemplates.fdf", //Frames from that fdf can be inherited in this file
IncludeFile "UI\FrameDef\UI\QuestDialog.fdf",

Frame "TEXTAREA" "MyTextArea" {
DecorateFileNames,
FrameFont "InfoPanelTextFont", 0.020, "",

TextAreaLineHeight 0.018, //Should fit used font Size, a high difference shows no text or much space between lines.

TextAreaLineGap 0.00,     //adds that much space between 2 Lines, addtional to TextAreaLineHeight.

TextAreaInset 0.035,      //Moves the Text and the scrollbar into the middle from all sides by this amount. This increases the min size for game crash.

TextAreaMaxLines 20,      //Only that amount of lines are displayed, if more lines are added oldest are removed.

TextAreaScrollBar "MyTextAreaScrollBar",
Frame "SCROLLBAR" "MyTextAreaScrollBar" INHERITS WITHCHILDREN "EscMenuScrollBarTemplate" {
}

ControlBackdrop "MyTextAreaBackdrop",
Frame "BACKDROP" "MyTextAreaBackdrop" INHERITS "QuestButtonBaseTemplate" {
}
}</code></pre>
                    </div>
                </div><br>
                jass Code creating MyTextArea from above.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block" data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">function</span> CreateMyTextArea <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">framehandle</span> textArea <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MyTextArea"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-constant">ORIGIN_FRAME_GAME_UI</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> <span class="prism-token prism-class-name">integer</span> index <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-constant">FRAMEPOINT_CENTER</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">loop</span>
<span class="prism-token prism-keyword">exitwhen</span> index <span class="prism-token prism-operator">==</span> <span class="prism-token prism-number">120</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzFrameAddText</span><span class="prism-token prism-punctuation">(</span>textArea<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">I2S</span><span class="prism-token prism-punctuation">(</span>index<span class="prism-token prism-punctuation">)</span><span class="prism-token prism-operator">+</span><span class="prism-token prism-string">": Test Text"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">set</span> index <span class="prism-token prism-operator">=</span> index <span class="prism-token prism-operator">+</span> <span class="prism-token prism-number">1</span>
<span class="prism-token prism-keyword">endloop</span>
<span class="prism-token prism-keyword">endfunction</span>
<span class="prism-token prism-comment">//===========================================================================</span>
<span class="prism-token prism-keyword">function</span> InitTrig_Create_MyTextArea <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">nothing</span> <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span> <span class="prism-token prism-string">"war3mapImported\\MyTextArea.toc"</span> <span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">call</span> <span class="prism-token prism-function">TimerStart</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">CreateTimer</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">false</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span> CreateMyTextArea<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">endfunction</span></code></pre>
                    </div>
                </div>QuestBackdrop<br>













                <div class="bbImageWrapper  js-lbImage" title="textarea-questdialog-backdrop-jpg.333074"
                    data-src="https://www.hiveworkshop.com/attachments/textarea-questdialog-backdrop-jpg.333074/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;textarea-questdialog-backdrop-jpg.333074&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/TextArea QuestDialog BackDrop.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/textarea-questdialog-backdrop-jpg.333074/"
                        class="bbImage" data-zoom-target="1" style="" alt="textarea-questdialog-backdrop-jpg.333074"
                        title="" width="" height="" loading="lazy">
                </div>

                <br>
                EscMenuBackdrop<br>













                <div class="bbImageWrapper  js-lbImage" title="big-inset-textarea-jpg.333072"
                    data-src="https://www.hiveworkshop.com/attachments/big-inset-textarea-jpg.333072/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;big-inset-textarea-jpg.333072&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Big Inset Textarea.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/big-inset-textarea-jpg.333072/"
                        class="bbImage" data-zoom-target="1" style="" alt="big-inset-textarea-jpg.333072" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        Inherited TextArea
                    </h2>
                </span>If one is overall fine with a TextArea and
                only wants some small changes, like a different
                textsize. Then one could inherit from the wanted
                TextArea and mention only the changed textsize. That
                way one can have small (in definition) , powerful
                and still valid frames.<br>
                That could look like this<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>IncludeFile "UI\FrameDef\glue\battlenettemplates.fdf",  //Frames from that fdf can be inherited in this file

Frame "TEXTAREA" "BigBnetTextArea" INHERITS WITHCHILDREN "BattleNetTextAreaTemplate" {
DecorateFileNames,
FrameFont "MasterFont", 0.020, "",
TextAreaLineHeight 0.015,
}</code></pre>
                    </div>
                </div>












                <div class="bbImageWrapper  js-lbImage" title="bigbnettextarea-jpg.333078"
                    data-src="https://www.hiveworkshop.com/attachments/bigbnettextarea-jpg.333078/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;bigbnettextarea-jpg.333078&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/BigBnetTextArea.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/bigbnettextarea-jpg.333078/" class="bbImage"
                        data-zoom-target="1" style="" alt="bigbnettextarea-jpg.333078" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                "BigBnetTextArea" is basicly
                "BattleNetTextAreaTemplate" but has a bigger
                TextSize and the lines are bigger, to fit better
                with the increased textsize.<br>
                To inherit a Frame's childFrames, one adds
                WITHCHILDREN after INHERITS.<br>
                <br>
                Codewise one can not access inherited childFrames
                using BlzGetFrameByName. With the release of the
                native BlzFrameGetChild in V1.32.6 one is able to
                get the inherited childFrames during the runtime, in
                1.32.6 this native ignores String&amp;Texture
                childFrames.<br>
                <br>
                <a id="Frames_TEXT"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        TEXT
                    </h2>
                </span>TEXT is the FrameType for Frames that has
                multiple uses, it displays text on the screen or it
                styles the text of a more advanced Frame. Unlike its
                equal String for SimpleFrames, TEXT can have various
                Frameevents and will take control of the Screenspace
                taken by it's size or it's displayed text. If one
                does not want that one can either disable the
                TEXT-Frame with <code class="bbCodeInline">BlzFrameSetEnable(frame, false)</code>
                by code or add the fdfaction <code class="bbCodeInline">LayerStyle "IGNORETRACKEVENTS",</code>.
                LayerStyle can not be reverted during the game but
                BlzFrameSetEnable might change the color when the
                TEXT-Frame has set colors for a disabled state.<br>
                <br>
                When it is used as style, it is defined as
                functional child-Frame in fdf. Like shown below.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>ButtonText "HelpButtonText",
Frame "TEXT" "HelpButtonText" INHERITS "EscMenuButtonTextTemplate" {
Text "KEY_HELP",
}</code></pre>
                    </div>
                </div><br>
                <a href="javascript:;" data-hash="TextMarkUp">TextMarkUP String &amp;
                    TEXT</a><br>
                <a id="SimpleFrames"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        SimpleFrames
                    </h2>
                </span><br>
                <a href="javascript:;" data-hash="SimpleFrames_String">String</a><br>
                <a href="javascript:;" data-hash="SimpleFrames_Texture">Texture</a><br>
                <a href="javascript:;" data-hash="SimpleFrames_Texture_TexCoord">TextureFraction</a><br>
                <a href="javascript:;" data-hash="SimpleFrames_Layer">Layer</a><br>
                <a href="javascript:;" data-hash="SimpleFrames_Button">SimpleButton</a><br>
                <a href="javascript:;" data-hash="SimpleFrames_StatusBar">SimpleStatusBar</a><br>
                <a href="javascript:;" data-hash="SimpleFrames_CheckBox">SimpleCheckBox</a><br>
                If you don't know how to use a custom toc-File,
                therefore can't use a custom fdf you should first do
                a tutorial about toc: <a href="https://www.hiveworkshop.com/threads/ui-toc-files.315854/"
                    class="link link--internal">UI:
                    toc-Files</a>.<br>
                <br>
                SimpleFrames are another group of frames. They are
                low in amount of types but frames of this group
                manage most of the direct ingame UI, like the
                unitinfo, the ability and item buttons.<br>
                Unlike Frames, Simpleframes require fdf and can not
                be created in a useful way without such a fdf
                defining a SimpleFrame first. All SimpleFrames can
                be moved out of the 4:3 screen. Most custom created
                Simpleframes do not fight for mousecontrol. For the
                displaying SimpleFrames are below Frames.<br>
                <br>
                If I write SIMPLEFRAME in uppercase only, i talk
                about this specific type otherwise i address the
                group.<br>
                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        SimpleFrame Types
                    </h2>
                </span>The mainframe able types in warcraft 3 for
                Simpleframes:<br>
                SIMPLEBUTTON<br>
                SIMPLECHECKBOX<br>
                SIMPLEFRAME<br>
                SIMPLESTATUSBAR<br>
                <br>
                They are defined in the fdf like Frames are. The
                start of 2 such Simpleframe definitions.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "SIMPLEFRAME" "SimpleInfoPanelIconDamage" {...
Frame "SIMPLEBUTTON" "UpperButtonBarButtonTemplate" {...</code></pre>
                    </div>
                </div><br>
                <h3 style="margin: 0">
                    Special Children
                </h3>SimpleFrames have 2 special frame-types which
                can not be real mainframes. During the game this
                types can only exist as children of any
                Simpleframe.<br>
                String<br>
                Texture<br>
                <br>
                This 2 types are Simpleframes, means one can use the
                frame natives onto them. But their definition
                differs from the others, inside fdf.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>String "SimpleInfoPanelTitleTextDisabledTemplate" INHERITS "SimpleInfoPanelTitleTextTemplate" {...
Texture "InfoPanelIconBackdrop" INHERITS "InfoPanelIconTemplate" {...</code></pre>
                    </div>
                </div>Inside the game this frames would be accessed
                with:<br>
                BlzGetFrameByName("SimpleInfoPanelTitleTextDisabledTemplate",
                createcontext)<br>
                BlzGetFrameByName("InfoPanelIconBackdrop",
                createcontext)<br>
                <br>
                Inside a fdf, such String/Texture can be defined
                outside of Simpleframes to have a base to inherit
                from. But one can create them only as part of a
                Simpleframe during the game.<br>
                String/Texture-Frames do not contain
                UseActiveContext/DecorateFileNames, they use it when
                their Parent uses it.<br>
                <br>
                <h3 style="margin: 0">
                    Warning
                </h3>The game does not like it, if you use this
                frame natives onto String/Texture, it will crash the
                game:<br>
                BlzFrameSetVisible<br>
                BlzFrameIsVisible<br>
                BlzFrameSetAlpha<br>
                BlzFrameSetLevel<br>
                BlzFrameSetEnable<br>
                BlzFrameSetScale<br>
                BlzFrameSetParent<br>
                BlzDestroyFrame<br>
                <br>
                <h3 style="margin: 0">
                    Anchor
                </h3>SimpleFrames have another keyword to pos child
                frames <b>Anchor</b>. Anchor is a shortcut for:
                "SetPoint pointA, parent, pointA, x, y,". One can
                still use the other 2; SetPoint and
                SetAllPoints.<br>
                Anchor TOPLEFT, 0.1, 0.05,<br>
                pos the own TOPLEFT to the parents TOPLEFT with 0.1
                x and 0.05 y offset.<br>
                <br>
                Anchor as the others SetPoint require the attached
                frame to take a part of the screen by having atleast
                Width or Height or both.<br>
                Otherwise it can happen that the Texture/String
                attaches itself to the parent of the parent.<br>
                Without a point the String/Texture will center
                itself to the parent or that ones parent (which can
                be the 4:3 Screen when SimpleFrames are created for
                ORIGIN_FRAME_GAME_UI), if the direct parent
                fails.<br>
                <br>
                <a id="SimpleFrames_String"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        String
                    </h2>
                </span>For Simpleframes String children display text
                onto the screen. One String can display one line of
                text or huge walls of text over multiple Lines, upto
                the whole screen and above that. I won't tell much
                about textmarkup for String, most is like with TEXT
                which should be an own subject.<br>
                <br>
                It is recommented to create and place StringFrames
                at the earliest with the event "0s expired". At
                earlier times it can happen that the StringFrame is
                displaced or does not display any text until the
                user changes resolution.<br>
                <br>
                String have a different keyword to setup the font
                then TEXT. Setting a font is required for a String
                to display visible text. There are 2 ways inside fdf
                to set Fonts either one adds
                <b>DecorateFileNames,</b> and uses for the fontFile
                a stringVariable from a StringList or write down the
                fontFile.<br>
                <div style="margin-left: 20px">Font
                    "InfoPanelTextFont",0.009,​</div>
                InfoPanelTextFont is only valid with
                <b>DecorateFileNames, </b>, the font is required for
                the String to be displayed.
                <b>DecorateFileNames,</b> has to be written inside
                the Parent of the String, if one reads the font that
                way.<br>
                <br>
                The FontFile also could be refered directly but
                without DecorateFileNames, in the parent. The
                example is not the same font.<br>
                <div style="margin-left: 20px">Font
                    "fonts\nim_____.ttf", 0.009,​</div><br>
                <h3 style="margin: 0">
                    String Example
                </h3>One defines a SIMPLEFRAME having a String child
                that childs shows the text.<br>
                In case you did skip <b>Anchor</b> the Width and
                Height are there to Anchor to the parent
                "TestString" which would fail otherwise.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "SIMPLEFRAME" "TestString" {
Width 0.0001,
Height 0.0001,
DecorateFileNames,
String "TestStringValue" {
Anchor TOPLEFT, 0, 0,
Font "InfoPanelTextFont", 0.01,
}
}</code></pre>
                    </div>
                </div>The Lua code creating the SIMPLEFRAME from
                above and setting the text.<br>
                First some Debug text is printed so one knows the
                code is actually running at all. After that one
                loads the toc loading the fdf with the Simpleframe.
                Then the Simpleframe is created his point is set and
                the text of the String child is set.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Start"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\your.toc"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> parent <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TestString"</span><span class="prism-token prism-punctuation">,</span> parent<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.5</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TestStringValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"Test Text"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Done"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                Theoretically the font also could be set inside the
                code using BlzFrameSetFont. For some wierd reason
                that does not work for Frame Type "TEXT"
                (V1.31.1).<br>
                <code class="bbCodeInline">BlzFrameSetFont(stringFrame, "fonts\\dfst-m3u.ttf", 0.016, 0)</code><br>
                <code class="bbCodeInline">BlzFrameSetFont(stringFrame, "fonts\\nim_____.ttf", 0.013, 0)</code><br>
                <code class="bbCodeInline">BlzFrameSetFont(stringFrame, "fonts\\thowr___.ttf", 0.012, 0)</code><br>
                Using this font native with a fontsize differing
                much from the initial fontsize can break the
                displayed text.<br>
                <hr class="bb-horizontal-ruler"><a id="SimpleFrames_Texture"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Texture
                    </h2>
                </span>Texture is the visual part for Simpleframes
                (Images).<br>
                A Texture will if he does not have a own size copy
                the parent's size.<br>
                <br>
                When seting the image inside the fdf one uses:<br>
                File FilePath,<br>
                <br>
                Texture can have some configs:<br>
                A Texture can have an AlphaMode to change the usage
                of alpha/opaque.<br>
                <div style="margin-left: 20px">AlphaMode
                    "ALPHAKEY",<br>
                    AlphaMode "ADD",<br>
                    AlphaMode "DISABLE",<br>
                    AlphaMode "BLEND",<br>
                    AlphaMode "MOD",​</div>












                <div class="bbImageWrapper  js-lbImage" title="alpha-mode-consolejpg-jpg.338226"
                    data-src="https://www.hiveworkshop.com/attachments/alpha-mode-consolejpg-jpg.338226/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;alpha-mode-consolejpg-jpg.338226&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Alpha Mode Consolejpg.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/alpha-mode-consolejpg-jpg.338226/"
                        class="bbImage" data-zoom-target="1" style="" alt="alpha-mode-consolejpg-jpg.338226" title=""
                        width="" height="" loading="lazy">
                </div>














                <div class="bbImageWrapper  js-lbImage" title="alphamode-some-background-jpg.338227"
                    data-src="https://www.hiveworkshop.com/attachments/alphamode-some-background-jpg.338227/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;alphamode-some-background-jpg.338227&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/AlphaMode Some Background.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/alphamode-some-background-jpg.338227/"
                        class="bbImage" data-zoom-target="1" style="" alt="alphamode-some-background-jpg.338227"
                        title="" width="" height="" loading="lazy">
                </div>

                <br>
                Might look into a wow ui <a href="https://wow.gamepedia.com/UITYPE_AlphaMode" target="_blank"
                    class="link link--external" rel="nofollow ugc noopener">wiki</a> for more
                infos, but be careful some might not work as
                expected or at all. The reason why one can look into
                wow is. Wow and warcraft 3 are both from Blizzard
                and they shared parts of their source code, part of
                it is the ui system.<br>
                <br>
                When using BlzFrameSetTexture the AlphaMode is
                overwritten.<br>
                <a id="SimpleFrames_Texture_TexCoord"></a><span style="color: orange">
                    <h3 style="margin: 0">
                        TextureFraction
                    </h3>
                </span>Textures have a feature called TexCoord with
                it they take only a part of an given image and
                display that over the space the Texture takes. The
                TexCoord setting is kept even when changing the
                current image by code. TextCoord has nothing to do
                with the space taken on the screen. <br>
                <br>
                Format: TexCoord Left, Right, Up, Bottom<br>
                TexCoord 0, 1, 0, 0.125, (take the total x; y-wise 0
                to 12.5% from the top of the Image-File)<br>
                <br>
                TexCoord 0.0, 0.5, 0.0, 0.5, (the topLeft part) see
                image below only a fraction of the Paladin icon.<br>













                <div class="bbImageWrapper  js-lbImage" title="fraction-of-paladin-jpg.338225"
                    data-src="https://www.hiveworkshop.com/attachments/fraction-of-paladin-jpg.338225/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;fraction-of-paladin-jpg.338225&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Fraction of Paladin.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/fraction-of-paladin-jpg.338225/"
                        class="bbImage" data-zoom-target="1" style="" alt="fraction-of-paladin-jpg.338225" title=""
                        width="" height="" loading="lazy">
                </div>

                <br>
                <br>
                One can also produce a Tile using TextCoord, to fill
                the Frame's given screen space with copies of that
                image. This is also done with TexCoord, by giving
                numbers higher than 1 for right and bottom.<br>
                TexCoord 0, 2, 0, 2,<br>













                <div class="bbImageWrapper  js-lbImage" title="tile-texcoord-jpg.365442"
                    data-src="https://www.hiveworkshop.com/attachments/tile-texcoord-jpg.365442/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1">
                    <img src="./index_files/Tile TexCoord.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/tile-texcoord-jpg.365442/" class="bbImage"
                        data-zoom-target="1" style="" alt="tile-texcoord-jpg.365442" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <br>
                A Texture can be rotated by 180 degree by placing
                TOPLEFT &amp; TOPRIGHT in reversed positions
                (Topleft where Topright should be and Topright where
                TopLeft should be).<br>
                <a href="https://www.hiveworkshop.com/attachments/390235/" target="_blank">View attachment
                    390235</a><br>
                <br>
                <h3 style="margin: 0">
                    Texture example
                </h3>Like with String this is an example how one
                would display just one Texture onto the screen. One
                defines a SIMPLEFRAME with Width and Height and a
                Texture which copies mimics the SIMPLEFRAME when not
                said otherwise.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "SIMPLEFRAME" "TestTexture"{
Width 0.04,
Height 0.04,
Texture "TestTextureValue" {
}
}</code></pre>
                    </div>
                </div>We load the toc mentioning the fdf with the
                SIMPLEFRAME and create the mainFrame "TestTexture".
                After that set the texture of the child to the Icon
                of the Paladin and pos the SIMPLEFRAME to center of
                the screen.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\your.toc"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> frame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TestTexture"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TestTextureValue"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNHeroPaladin"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>frame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <h3 style="margin: 0">
                    Texture Coloring
                </h3>A Texture can be colored during the game with
                the native <code
                    class="bbCodeInline">BlzFrameSetVertexColor takes framehandle frame, integer color</code>.
                To get the color integer one uses another native
                <code class="bbCodeInline">BlzConvertColor takes integer a, integer r, integer g, integer b</code><br>
                <code class="bbCodeInline">BlzFrameSetVertexColor(texture, BlzConvertColor(255, 255, 255, 1))</code>
                would display the texture without blue.<br>
                When one uses that line onto an Archmage Texture it
                would become yellowish like that image below<br>













                <div class="bbImageWrapper  js-lbImage" title="yellow-archmage-jpg.346918"
                    data-src="https://www.hiveworkshop.com/attachments/yellow-archmage-jpg.346918/"
                    data-lb-sidebar-href="" data-lb-caption-extra-html="" data-single-image="1"
                    data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;yellow-archmage-jpg.346918&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Yellow Archmage.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/yellow-archmage-jpg.346918/" class="bbImage"
                        data-zoom-target="1" style="" alt="yellow-archmage-jpg.346918" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <hr class="bb-horizontal-ruler"><a id="SimpleFrames_Layer"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Layer
                    </h2>
                </span>Layer are a fdf feature for Simpleframes that
                can be used to setup the order of displaying. Inside
                a Layer only String and Texture can be defined.
                Blizzard used 2 Layers in their fdf for warcraft
                3.<br>
                <br>
                Layer "BACKGROUND" {...<br>
                Layer "ARTWORK" {...<br>
                Layer "ARTWORK_OVERLAY" {...<br>
                <br>
                "ARTWORK" is displayed above "BACKGROUND".<br>
                Layer "BACKGROUND" of a child SIMPLEFRAME is above
                the Layer "ARTWORK" of the parent.<br>
                <br>
                Based on wow ui <a href="https://wow.gamepedia.com/Layer" target="_blank" class="link link--external"
                    rel="nofollow ugc noopener">wikis</a> there
                should be more, but I failed to create them.
                Probably they do not exist in warcraft 3 (V1.31.1).
                Theoretically one could think the HIGHLIGHT layer is
                implemented over the keyword UseHighlight
                &lt;texture&gt;, for SIMPLEBUTTON.<br>
                <br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "SIMPLEFRAME" "TestTextureLayer" {
Width 0.1,
Height 0.1,

Layer "ARTWORK" {
Texture {
Width 0.05,
Height 0.05,
Anchor BOTTOMLEFT, 0, 0,
File "ReplaceableTextures\CommandButtons\BTNHeroMountainKing",
}
Texture {
Width 0.05,
Height 0.05,
Anchor BOTTOMRIGHT, 0, 0,
File "ReplaceableTextures\CommandButtons\BTNHeroBloodElfPrince",
}
}

Layer "BACKGROUND" {
Texture {
Width 0.1,
Height 0.1,
Anchor CENTER, 0, 0,
File "ReplaceableTextures\CommandButtons\BTNHeroPaladin",
}
}
}</code></pre>
                    </div>
                </div>
                <hr class="bb-horizontal-ruler"><a id="SimpleFrames_Button"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        SIMPLEBUTTON
                    </h2>
                </span>SimpleButton is the interactive Simpleframe.
                It is quite powerful for a Simpleframe, it can be
                clicked starting a FRAMEEVENT_CONTROL_CLICK, even
                when being moved out of the 4:3 Screen. When being
                clicked it will not keep the focus (which
                Frame-Buttons do). It controls the space on the
                screen, therefore one can not order/select units at
                that spot. Each SIMPLEBUTTON can have only one
                FRAMEEVENT_CONTROL_CLICK Event, when one registers
                another one (for the same SimpleButton) the previous
                event will not fire anymore.<br>
                Other Simpleframes can be the tooltip of a
                SIMPLEBUTTON (But the tooltip-SimpleFrame is not
                hidden with that call as it does with Frame, maybe a
                bug in 1.31.1).<br>
                One can use BlzFrameSetEnable on the Button to stop
                the user from starting events with that Buttons. But
                it will still control the screen space and the
                tooltip won't update anymore by (un)hovering the
                button. (Frame-Buttons stop controling the
                screenspace when being disabled, if they ever
                did)<br>
                Using BlzFrameSetVisible(button, false) will hide
                the button and it's children as it will free the
                screen space taken by them.<br>
                A SIMPLEBUTTON can have functional children to have
                a texture for different states and different Strings
                for that states. This functional children are kinda
                static and unreachable with BlzGetFrameByName,
                making them kinda bad for dynamic Icon Buttons. When
                one wants a Menu(F10) like Button then it is okay.
                "ui\framedef\ui\upperbuttonbar.fdf" contains
                blizzards usage for that. For an IconButton it is
                better to create a SIMPLEBUTTON with a Texture Child
                that way one can change the texture during the
                game.<br>
                <br>
                This would be the definition for such an IconButton
                inside fdf:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "SIMPLEBUTTON" "MySimpleButton" {
Width 0.039,
Height 0.039,
Texture "MySimpleButtonTexture" {
}
}</code></pre>
                    </div>
                </div>During The game one would create with
                BlzCreateSimpleFrame "MySimpleButton" pos that frame
                and set the texture of "MySimpleButtonTexture" using
                BlzFrameSetTexture<br>
                <br>
                The Lua code that creates that button showing a
                Paladin icon. When the button is clicked it prints
                "Button Click":<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzLoadTOCFile</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"war3mapImported\\MySimpleButton.toc"</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">local</span> trigger <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">CreateTrigger</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">TriggerAddAction</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">function</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">print</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"Button Click"</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">-- SimpleButton does not keep the focus.</span>
<span class="prism-token prism-keyword">end</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">local</span> button <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateSimpleFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MySimpleButton"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>button<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.9</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-function">BlzGetFrameByName</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"MySimpleButtonTexture"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ReplaceableTextures\\CommandButtons\\BTNHeroPaladin"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-keyword">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzTriggerRegisterFrameEvent</span><span class="prism-token prism-punctuation">(</span>trigger<span class="prism-token prism-punctuation">,</span> button<span class="prism-token prism-punctuation">,</span> FRAMEEVENT_CONTROL_CLICK<span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                If one would want a glowing while the button is
                hovered, one would add the functional child frame to
                the SIMPLEBUTTON, inside the fdf. The example
                Highlight is the yellow glowing one sees in
                scorescreen.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Texture "MySimpleButtonButtonHighlight" {
File "UI\Glues\ScoreScreen\scorescreen-tab-hilight.blp",
AlphaMode "ADD",
}
Frame "SIMPLEBUTTON" "MySimpleButtonGlowing" {
Width 0.039,
Height 0.039,
UseHighlight "MySimpleButtonButtonHighlight",
Texture "MySimpleButtonTexture" {
}
}</code></pre>
                    </div>
                </div>
                <hr class="bb-horizontal-ruler"><br>
                <a id="SimpleFrames_StatusBar"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        SimpleStatusBar
                    </h2>
                </span>A SIMPLESTATUSBAR is a simple frame that
                shows a texture partly (from left to right) based on
                the SIMPLESTATUSBAR current value vs its max value.
                The Texture is stretched to the total frames size.
                On default the value can be from 0 to 100 (0 beeing
                empty, 100 full). 40 of 100 would show 40% of the
                Image. A SIMPLESTATUSBAR can not have any
                Frameevents and does not block mouse clicks.<br>
                <br>













                <div class="bbImageWrapper  js-lbImage" title="bar-jpg.325338"
                    data-src="https://www.hiveworkshop.com/attachments/bar-jpg.325338/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;bar-jpg.325338&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Bar.jpg" data-url="https://www.hiveworkshop.com/attachments/bar-jpg.325338/"
                        class="bbImage" data-zoom-target="1" style="" alt="bar-jpg.325338" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        Functions
                    </h2>
                </span><br>
                Codewise there are 3 functions handling the bar's
                Value.<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetValue</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> value <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameGetValue</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">real</span>
<span class="prism-token prism-keyword">native</span> <span class="prism-token prism-function">BlzFrameSetMinMaxValue</span> <span class="prism-token prism-keyword">takes</span> <span class="prism-token prism-class-name">framehandle</span> frame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> minValue<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-class-name">real</span> maxValue <span class="prism-token prism-keyword">returns</span> <span class="prism-token prism-class-name">nothing</span></code></pre>
                    </div>
                </div><code class="bbCodeInline">BlzFrameSetValue</code>
                sets the current value.<br>
                <code class="bbCodeInline">BlzFrameGetValue</code>
                gets the local current value<br>
                <code class="bbCodeInline">BlzFrameSetMinMaxValue</code>
                sets the min max values of the bar.<br>
                <br>
                You also might use <code
                    class="bbCodeInline">BlzFrameSetTexture takes framehandle frame, string texFile, integer flag, boolean blend</code>
                to change the used textures during the game.<br>
                It is also possible to use a white Texture and
                change the color of the bar using











                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        JASS:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-jass" dir="ltr" data-xf-init="code-block"
                            data-lang="jass"><code class=" language-jass"><span class="prism-token prism-function">BlzFrameSetTexture</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">"ui\\feedback\\progressbar\\human-statbar-color"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-boolean">true</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetVertexColor</span><span class="prism-token prism-punctuation">(</span>bar<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-function">BlzConvertColor</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">255</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">)</span></code></pre>
                    </div>
                </div> The BlzFrameSetVertexColor line crashed for
                me in 1.31.1, but work fine in 1.32.1
                (reforged).<br>
                <br>
                To bring a custom SIMPLESTATUSBAR into your game one
                creates one. This either can be done by defining one
                in fdf, loading it and then creating or by <a href="javascript:;" data-hash="FrameExampleBarNoFdf">code
                    only</a><br>
                <br>
                Instead of Borders&amp;Backgrounds one could use
                CommandButton-Icons. To for examle show Arthas
                corruption state or to show cooldowns.<br>
                <br>
                <span style="color: orange">
                    <h2 style="margin: 0">
                        The Frame Definition File
                    </h2>
                </span>There is no mainframe of type SIMPLESTATUSBAR
                loaded on default, hence not createable without
                unwanted other frames. Therefore one has to write a
                custom one and load that custom one over a custom
                written toc.<br>
                By adding Additional SimpleFrames one can have a
                border an overlay text and adding a background blp
                texture. The barTexture is above the background and
                will hide more of it as nearer the value is to the
                max value.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> BarTexture
Format: BarTexture "TexturePath",
Purpose: Define the Texture filling the Frame from left to right, based on the value of the SIMPLESTATUSBAR.

// A "SIMPLESTATUSBAR" using the progress Textures as filling texture with a Black Background. The color of the "CustomBar" has to be changed after it's creation.
Frame "SIMPLESTATUSBAR" "CustomBar" {
Width 0.07,
Height 0.012,
BarTexture "ui\feedback\progressbar\human-statbar-color",
Layer "BACKGROUND" {
Texture "CustomBarBackground" {
File "textures\black32",
}
}
}

String "MyBarTextTemplate" {
//FontColor 0.99 0.427 0.0705 1.0, //Red Green Blue Alpha 0.0 to 1.0
FontColor 1.0 1.0 1.0 1.0,
FontShadowColor 0.0 0.0 0.0 0.9,
FontShadowOffset 0.001 -0.001,
Font "MasterFont", 0.01, //MasterFont is only valid with "DecorateFileNames,"
}
Frame "SIMPLESTATUSBAR" "MyBarEx" {
Width 0.07, //Default Width
Height 0.012, //Default Height
BarTexture "Replaceabletextures\Teamcolor\Teamcolor00", //Default BarTexture
Layer "BACKGROUND" { //A simpleFrames thing, where this is placed layer wise
Texture "MyBarExBackground"{ //the BACKGROUND Texture named "MyBarExBackground" its also a frame and a child
File "textures\black32", //Default Texture for "MyBarExBackground"
}
}
Frame "SIMPLEFRAME" "MyBarExFrame" { //Child of "MyBarEx"
DecorateFileNames, //Lookup FileNames in a StringList
SetAllPoints, //copy "MyBarEx"
Layer "ARTWORK" {
Texture "MyBarExBorder" {
File "SimpleXpBarBorder", //Default Texture for "MyBarExBorder"
}
String "MyBarExText" INHERITS "MyBarTextTemplate" {
Text "MyBarEx", //Default Text for "MyBarExText" which takes over Data from "MyBarTextTemplate"
}
}
}
}

Frame "SIMPLESTATUSBAR" "MyBar" {
Width 0.07,
Height 0.012,
BarTexture "Replaceabletextures\Teamcolor\Teamcolor00",
Layer "BACKGROUND" {
Texture "MyBarBackground" {
File "Replaceabletextures\Teamcolor\Teamcolor27",
}
}
Frame "SIMPLEFRAME" "MyBarFrame" {
SetAllPoints,
DecorateFileNames,
Layer "ARTWORK" {
String "MyBarText" INHERITS "MyBarTextTemplate" {
Text "MyBar",
}
}
}
}
Frame "SIMPLESTATUSBAR" "MySimpleBar" {
Width 0.07,
Height 0.012,
}
}</code></pre>
                    </div>
                </div><br>
                Thats the fdf text for 3 SIMPLESTATUSBAR all beeing
                mainFrames. MyBarEx has a border while MyBar does
                not. The last has no additional features
                (<s>background, border, text</s>).<br>
                Without the border it is more suited for Faces.<br>
                <br>
                ui\feedback\buildprogressbar\human-statbar-color3<br>
                <br>
                One also could use the Playercolors:<br>
                replaceabletextures\teamcolor\teamcolor00<br>
                replaceabletextures\teamcolor\teamcolor01<br>
                ...<br>
                replaceabletextures\teamcolor\teamcolor10<br>
                ...<br>
                replaceabletextures\teamcolor\teamcolor27<br>
                <br>
                <br>
                SIMPLECHECKBOX: I wasn't able to attach events nor
                get the value in any way last time I tested it
                (V1.31PTR) so it is kinda useless right now.
                Therefore I won't have an explanition here.<br>
                <br>
                <br>
                <a id="TextMarkUp"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        TextMarkUP String &amp; TEXT
                    </h2>
                </span>Inside fdf one can setup the color of a
                String/TEXT Frame with some fdfActions. But it is
                also possible to color Text with the warcraft 3
                color codes when setting the text as prefix prefix
                |cff0021ff.<br>
                <br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> FontColor
Format1: FontColor red green blue alpha,
Format2: FontColor red green blue,
Example: FontColor 1.0 0.201 1.0 1.0,
Purpose: Color of the text in enabled state. Can be skiped in which case the Text will be white. Alpha is 1.0 if skiped.

FontDisabledColor
Format1: FontDisabledColor red green blue alpha,
Format2: FontDisabledColor red green blue,
Purpose: Like FontColor but for disabled Frames. Skipable.

FontHighlightColor
Format1: FontHighlightColor red green blue alpha,
Format2: FontHighlightColor red green blue,
Purpose: Like FontColor but for Frames that have focus. Skipable.

FrameFont
Format: FrameFont FontName, size, text, 
Example: FrameFont "MasterFont", 0.011, "", 
Purpose: used by Frames, MasterFont is valid when in the same Frame DecorateFileNames is used otherwise you write the filePath.

Font
Format: Font FontName, size,
Example: Font "InfoPanelTextFont", 0.009,
Purpose: Styles the text of a String the Text-Child Frame of SIMPLEFRAME.</code></pre>
                    </div>
                </div>TEXT/String can have dynamic height with
                automatic new Line wraps by seting one Point and
                using BlzFrameSetSize(x, 0). It is told that the
                Relative position does not update good, if that
                happens setting the Size again fixes it.<br>
                <a id="TextMarkUp_Fonts"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Fonts
                    </h2>
                </span>Warcraft 3 (Reforged V1.32.2) has fonts for
                all Languages found inside war3.w3mod:fonts refered
                by you just with "Fonts\name":<br>
                2002.ttf<br>
                2002b.ttf<br>
                arheigb_bd.ttf<br>
                arheiu20m.ttf<br>
                arheiu20_md.ttf<br>
                arlishuu20_db.ttf<br>
                arlishuu30_md.ttf<br>
                bl.ttf<br>
                blizzardglobal-v5_4.ttf<br>
                blq55.ttf<br>
                blq55web.ttf<br>
                blq85web.ttf<br>
                dffn_b31.ttf<br>
                dfheilt.ttf<br>
                dfheimd.ttf<br>
                dfkgothicmd.ttf<br>
                dfst-m3u.ttf<br>
                frizqt__.ttf<br>
                ghei00b_t.ttf<br>
                inconsolata-regular.ttf<br>
                nimrodmt.ttf<br>
                nim_____.ttf<br>
                thowr___.ttf<br>
                tt5500m_.ttf<br>
                ulei00m.ttf<br>
                <br>


                <div class="bbCodeSpoiler">
                    <button type="button" class="bbCodeSpoiler-button button--longText button" data-xf-click="toggle"
                        data-xf-init="tooltip" data-original-title="Click to reveal or hide spoiler"
                        id="js-XFUniqueId55"><span class="button-text">

                            <span><span class="bbCodeSpoiler-button-title">V1.31.1
                                    German</span></span>
                        </span></button>
                    <div class="bbCodeSpoiler-content">
                        <div class="bbCodeBlock bbCodeBlock--spoiler">
                            <div class="bbCodeBlock-content"><br>
                                fonts\dfst-m3u.ttf<br>
                                fonts\nim_____.ttf<br>
                                fonts\thowr___.ttf<br>
                                fonts\tt5500m_.ttf<br>
                                from _locales<br>
                                fonts\dffn_b31.ttf<br>
                                fonts\dfheimd.ttf<br>
                                fonts\frizqt__.ttf<br>
                            </div>
                        </div>
                    </div>
                </div><br>
                <br>
                Inside fdf the path to them is not used (by
                Blizzard, you can do that if you want) instead
                variables defined in war3.w3mod:ui\war3skins.txt
                are.<br>
                If you want to use such a font Variable in fdf the
                same Frame needs the FdfAction
                DecorateFileNames,.<br>
                (From warcraft 3 version 1.32) This fonts can also
                be used in code when using the function
                SkinManagerGetLocalPath. For example:
                SkinManagerGetLocalPath("MasterFont") to get the
                filepath "Fonts\BLQ55Web.ttf"<br>
                From that file (From Warcraft 3 V1.32.2)[Box]<br>
                // fonts can be optionally overriden by locale<br>
                // Each font property will first be queried with the
                &lt;property&gt;_&lt;locale&gt; and the game will
                use that version if it exists.<br>
                // If the locale specific property does not exist it
                will fallback to the property name without the
                locale tag.<br>
                // For example to override the master font for
                korean you would add a new entry<br>
                // MasterFont:koKR=Fonts\DFHeiMd.ttf<br>
                //<br>
                // fonts - default<br>
                MasterFont=Fonts\BLQ55Web.ttf<br>
                MasterFontBold=Fonts\BLQ85Web.ttf<br>
                MessageFont=Fonts\BLQ55Web.ttf<br>
                ChatFont=Fonts\BLQ55Web.ttf<br>
                EscMenuTextFont=Fonts\BLQ55Web.ttf<br>
                InfoPanelTextFont=Fonts\BLQ55Web.ttf<br>
                TextTagFont=Fonts\BLQ55Web.ttf[/box]<br>
                <br>
                In 1.31.1 the locals could have own Fonts and
                individual war3skins.txt-Files. Like
                war3.w3mod:_locales\dede.w3mod:ui\war3skins.txt<br>
                <br>
                <a id="TextMarkUp_Shadow"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Text Shadow/Color
                    </h2>
                </span>TEXT and String Frames can have a TextShadow
                this can only be set in fdf with this actions:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> FontShadowColor
Format1: FontShadowColor red green blue alpha,
Format2: FontShadowColor red green blue,
Example: FontShadowColor 0.0 0.0 0.0 0.9,
Purpose: Color of the Text's shadow. Alpha is 1.0 if skiped.

FontShadowOffset
Format:  FontShadowOffset x y, 
Example: FontShadowOffset 0.001 -0.001, 
Purpose: This is a relative offset to the default Text.</code></pre>
                    </div>
                </div><br>
                <a id="TextMarkUp_FontFlags"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        FontFlags
                    </h2>
                </span>FontFlags alter the display of text given.
                One can combine multiple Flags with | like this:
                <code class="bbCodeInline">FontFlags "IGNORECOLORCODES|IGNORENEWLINES",</code>.<br>
                The effect of FontFlag is kept after using
                BlzFrameSetText onto such a Frame.<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Format: FontFlags text,

Example: FontFlags "PASSWORDFIELD",
Purpose: The text will be displayed only with *

Example: FontFlags "IGNORECOLORCODES",
Purpose: |cffff00a0 is not parsed and displayed on the screen text

Example: FontFlags "IGNORENEWLINES",
Purpose: |n &amp; \n have no effect and are displayed on the screen

Example: FontFlags "NONPROPORTIONAL",
Purpose: monospaced font (same amount of horizontal space)

Example: FontFlags "NOWRAP",
Purpose: Displays only the text fitting into the first Line

Example: FontFlags "FIXEDSIZE",
Purpose:

Example: FontFlags "FIXEDCOLOR",
Purpose:

Example: FontFlags "HIGHLIGHTONMOUSEOVER",
Purpose:</code></pre>
                    </div>
                </div><br>
                Example fdf<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>Frame "TEXT" "MediumTextColor" {
DecorateFileNames,
FrameFont "MasterFont", 0.015, "",
Text "|cffff00a0Test123Text|r|nAber Mein Ha13 ist besser",
FontFlags "IGNORECOLORCODES",
SetPoint CENTER, "ConsoleUI", CENTER, 0, -0.06,
}
Frame "TEXT" "MediumTextNewLine" {
DecorateFileNames,
FrameFont "MasterFont", 0.015, "",
Text "|cffff00a0Test123Text|r|nAber Mein Ha13 ist besser",
FontFlags "IGNORENEWLINES",
SetPoint CENTER, "ConsoleUI", CENTER, 0, -0.09,
}

Frame "TEXT" "MediumTextNewLine2" {
DecorateFileNames,
Width 0.1,
Height 0.1,
FrameFont "MasterFont", 0.01, "",
Text "|cffff00a0Test123Text|r Aber Mein Ha13 ist besser",
FontFlags "NOWRAP",
SetPoint TOPRIGHT, "ConsoleUI", TOPRIGHT, -0.1, -0.09,
}
Frame "TEXT" "MediumTextProport" {
DecorateFileNames,
Width 0.1,
Height 0.1,
FrameFont "MasterFont", 0.01, "",
Text "Aber Mein Ha13 ist besser",
FontFlags "NONPROPORTIONAL",
SetPoint TOPLEFT, "ConsoleUI", TOPLEFT, 0.1, -0.09,
}</code></pre>
                    </div>
                </div><br>
                <a id="TextMarkUp_Alignment"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Text-Alignment
                    </h2>
                </span>TextAlignment is only important when an text
                is given a rect. inside Fdf the Horzion and vertical
                alignment is seperated:<br>









                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Code:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code> FontJustificationH
Format1: FontJustificationH JUSTIFYLEFT,
Format2: FontJustificationH JUSTIFYCENTER,
Format3: FontJustificationH JUSTIFYRIGHT,
Purpose: When an TEXT frame is given a rect, it will pos the displayed text x wise at that TextJustify

FontJustificationV
Format1: FontJustificationV JUSTIFYTOP,
Format2: FontJustificationV JUSTIFYMIDDLE,
Format3: FontJustificationV JUSTIFYBOTTOM, 
Purpose: When an TEXT frame is given a rect, it will pos the displayed text y-wise at that TextJustify 

FontJustificationOffset
Format: FontJustificationOffset x y, 
Example: FontJustificationOffset 0.01 0.0, 
Purpose: Displays the Text with that offset to it's frames position.</code></pre>
                    </div>
                </div><br>
                in Code it is one native:<br>
                <code
                    class="bbCodeInline">BlzFrameSetTextAlignment takes framehandle frame, textaligntype vert, textaligntype horz</code><br>
                <h3 style="margin: 0">
                    vertical
                </h3>TEXT_JUSTIFY_TOP<br>
                TEXT_JUSTIFY_MIDDLE<br>
                TEXT_JUSTIFY_BOTTOM<br>
                <br>
                <h3 style="margin: 0">
                    horizontal
                </h3>TEXT_JUSTIFY_LEFT<br>
                TEXT_JUSTIFY_CENTER<br>
                TEXT_JUSTIFY_RIGHT<br>
                <br>
                When an text is given only a Point, it will be a
                single line text. In such a case the type of point
                used can defines the direction the text will extend
                to with having more text chars.<br>
                With TOP, CENTER and BOTTOM the text will extend
                equal to both sides, the given point is the
                center.&lt;|&gt;<br>
                With TOPLEFT, LEFT and BOTTOMLEFT the text will
                extend to the right. |&gt;<br>
                With RIGHT, TOPRIGHT and RIGHT the text will extend
                to the left. &lt;|<br>
                This can be important when having a TEXT-Frame near
                the 4:3 border, when the text expands into the 16:9
                area a part of the text of the TEXT-Frame is not
                displayed.<br>
                <br>
                In the Image the BACKDROP has an bigger size then
                the TEXT-Frames so one can see the rects border and
                text clearly.<br>













                <div class="bbImageWrapper  js-lbImage" title="text-justify-jpg.330283"
                    data-src="https://www.hiveworkshop.com/attachments/text-justify-jpg.330283/" data-lb-sidebar-href=""
                    data-lb-caption-extra-html="" data-single-image="1" data-fancybox="lb-undefined"
                    data-caption="&lt;h4&gt;text-justify-jpg.330283&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;&quot; class=&quot;js-lightboxCloser&quot;&gt;&lt;/a&gt;&lt;/p&gt;"
                    style="cursor: pointer;">
                    <img src="./index_files/Text Justify.jpg"
                        data-url="https://www.hiveworkshop.com/attachments/text-justify-jpg.330283/" class="bbImage"
                        data-zoom-target="1" style="" alt="text-justify-jpg.330283" title="" width="" height=""
                        loading="lazy">
                </div>

                <br>
                This code creates the shown image<br>












                <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
                    <div class="bbCodeBlock-title">
                        Lua:
                    </div>
                    <div class="bbCodeBlock-content" dir="ltr">
                        <pre class="bbCodeCode language-lua" dir="ltr" data-xf-init="code-block" data-lang="lua"><code class=" language-lua"><span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> real <span class="prism-token prism-operator">=</span> MarkGameStarted
<span class="prism-token prism-keyword">function</span> <span class="prism-token prism-function">MarkGameStarted</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">real</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-comment">--the displayed texts</span>
<span class="prism-token prism-keyword">local</span> texts <span class="prism-token prism-operator">=</span> <span class="prism-token prism-punctuation">{</span>
<span class="prism-token prism-string">"TOP LEFT"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"TOP Center"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"TOP RIGHT"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"Middle LEFT"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"Middle Center"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"Middle RIGHT"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"Bottom LEFT"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"Bottom Center"</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-string">"Bottom RIGHT"</span>
<span class="prism-token prism-punctuation">}</span>
<span class="prism-token prism-comment">--the text justifiers</span>
<span class="prism-token prism-keyword">local</span> justify <span class="prism-token prism-operator">=</span> <span class="prism-token prism-punctuation">{</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_TOP<span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_LEFT<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_TOP<span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_CENTER<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_TOP<span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_RIGHT<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_MIDDLE<span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_LEFT<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_MIDDLE<span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_CENTER<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_MIDDLE<span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_RIGHT<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_BOTTOM <span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_LEFT<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_BOTTOM <span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_CENTER<span class="prism-token prism-punctuation">}</span><span class="prism-token prism-punctuation">,</span>
<span class="prism-token prism-punctuation">{</span>TEXT_JUSTIFY_BOTTOM <span class="prism-token prism-punctuation">,</span> TEXT_JUSTIFY_RIGHT<span class="prism-token prism-punctuation">}</span>
<span class="prism-token prism-punctuation">}</span>

<span class="prism-token prism-keyword">local</span> back <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrame</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"QuestButtonBaseTemplate"</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-function">BlzGetOriginFrame</span><span class="prism-token prism-punctuation">(</span>ORIGIN_FRAME_GAME_UI<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>back<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.28</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.28</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>back<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>

<span class="prism-token prism-keyword">for</span> index <span class="prism-token prism-operator">=</span> <span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">9</span> <span class="prism-token prism-keyword">do</span>
<span class="prism-token prism-keyword">local</span> textFrame <span class="prism-token prism-operator">=</span> <span class="prism-token prism-function">BlzCreateFrameByType</span><span class="prism-token prism-punctuation">(</span><span class="prism-token prism-string">"TEXT"</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span> back<span class="prism-token prism-punctuation">,</span><span class="prism-token prism-string">""</span><span class="prism-token prism-punctuation">,</span><span class="prism-token prism-number">0</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetAbsPoint</span><span class="prism-token prism-punctuation">(</span>textFrame<span class="prism-token prism-punctuation">,</span> FRAMEPOINT_CENTER<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.4</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.3</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetSize</span><span class="prism-token prism-punctuation">(</span>textFrame<span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">,</span> <span class="prism-token prism-number">0.25</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetTextAlignment</span><span class="prism-token prism-punctuation">(</span>textFrame<span class="prism-token prism-punctuation">,</span> justify<span class="prism-token prism-punctuation">[</span>index<span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">[</span><span class="prism-token prism-number">1</span><span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">,</span> justify<span class="prism-token prism-punctuation">[</span>index<span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">[</span><span class="prism-token prism-number">2</span><span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-function">BlzFrameSetText</span><span class="prism-token prism-punctuation">(</span>textFrame<span class="prism-token prism-punctuation">,</span> texts<span class="prism-token prism-punctuation">[</span>index<span class="prism-token prism-punctuation">]</span><span class="prism-token prism-punctuation">)</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span>
<span class="prism-token prism-keyword">end</span></code></pre>
                    </div>
                </div><br>
                <a id="KnownErrors"></a><span style="color: orange">
                    <h2 style="margin: 0">
                        Errors
                    </h2>
                </span>Show/hide onto a null Frame can crash the
                current running Thread.<br>
                Creating a Frame with a empty framehandle variable
                as parent leads to dc when an framenative is used
                onto it.<br>
                BlzFrameGetChild does not check for out of bounce
                Exceptions.<br>
                Some Frames do not exist until the local game
                requires them.<br>
                Using BlzFrameSetTooltip twice with the same
                combination crashes the game when the Frame is
                hovered.<br>
                Can't Undo BlzFrameSetTooltip.<br>
                BlzFrameSetFont does only work onto
                String-SimpleFrame.<br>
                BlzFrameSetFont onto SimpleFrame crashs the
                game.<br>
                String and Textures crash the game when you use some
                FrameNatives onto them.<br>
                non SimpleFrames used as Tooltip that could leave
                4:3 sometimes are limited to 4:3. This can be
                avoided by creating an empty FRAME parent for the
                tooltip which is used as Tooltip.<br>
                Using BlzFrameSetParent to make a Parent the child
                of it's offspring crashes the game with a endless
                loop<br>
                In Warcraft 3 V1.31.x the MENU of a "POPUPMENU"
                breaks when the "POPUPMENU" is placed outside of the
                4:3 Screen.<br>
                Move/Size HeroBar -&gt; repos HeroButtons.<br>
                Using Allianz Dialog and it's children can desync
                replays, because they do only exist in mp but not in
                the replay and therefore result into a dismatching
                handleId-Block.<br>
                Warcraft 3's Save&amp;Load does not include TOC
                UI-Frame/API usage, worse using loaded
                UIframe-variables in a UI-frame native will crash
                the game.<br>
                in 1.32.6 exists a bug. BlzGetOriginFrame does not
                return a valid frame (GetHandleId 0) when one got
                the expected originframe over BlzFrameGetChild
                first.<br>
                Creating Frames of Type "BACKDROP", "TEXTAREA",
                "SIMPLEMESSAGEFRAME", "DIALOG" or "CONTROL" can
                crash the game, if they have a wrong setup.<br>
                The game can crash when moving/resizing
                ORIGIN_FRAME_CHAT_MSG/ORIGIN_FRAME_UNIT_MSG/ORIGIN_FRAME_TOP_MSG
                using bad values.
            </div>
        </article>
    </div>
</body>

</html>